Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- Spark
- Selenium
- 데이터 엔지니어
- airflow
- HTML
- django
- 코딩 테스트
- Tableau
- 코딩테스트
- VPC
- Snowflake
- 팀 프로젝트
- PCCP
- beuatifulsoup
- Til
- cloud platform
- GCP
- 데이터 시각화
- Kafka
- AWS
- SQL
- superset
- 데브코스
- 코테 연습
- 슈퍼셋
Archives
- Today
- Total
주니어 데이터 엔지니어 우솨's 개발일지
테스트 기능(Test) 본문
Testing
셸에서 테스트시에 메소드 이름에 test_로 시작하는것만 실행된다.
from django.test import TestCase
from polls_api.serializers import QuestionSerializer,VoteSerializer
from django.contrib.auth.models import User
from polls.models import Question, Choice, Vote
class VoteSerializerTest(TestCase) :
def setUp(self) :
self.user = User.objects.create(username='testuser')
self.question = Question.objects.create(
question_text = 'abc',
owner=self.user,
)
self.choice = Choice.objects.create(
question = self.question,
choice_text=['1']
)
#정상적인 경우의 테스트
def test_vote_serializer(self) :
self.assertEqual(User.objects.all().count(),1)
data = {
'question' : self.question.id,
'choice' : self.choice.id,
'voter' : self.user.id
}
serializer = VoteSerializer(data=data)
self.assertTrue(serializer.is_valid())
vote = serializer.save()
self.assertEqual(vote.question, self.question)
self.assertEqual(vote.choice, self.choice)
self.assertEqual(vote.voter, self.user)
#비정상적인 경우의 테스트
def test_vote_serializer_with_duplicate_vote(self) :
self.assertEqual(User.objects.all().count(),1)
choice1 = Choice.objects.create(
question = self.question,
choice_text=['2']
)
Vote.objects.create(question=self.question, choice=self.choice, voter=self.user)
data = {
'question' : self.question.id,
'choice' : choice1.id,
'voter' : self.user.id
}
serializer = VoteSerializer(data=data)
self.assertFalse(serializer.is_valid()) #유효하지 않다 False인지 확인
def test_vote_serializer_with_unmatched_question_and_choice(self) :
question2 = Question.objects.create(
question_text = 'abc',
owner=self.user,
)
choice2 = Choice.objects.create(
question = question2,
choice_text='1'
)
data = {
'question' : self.question.id,
'choice' : choice2.id,
'voter' : self.user.id
}
serializer = VoteSerializer(data=data)
self.assertFalse(serializer.is_valid())
class QuestionSerializerTestCase(TestCase) :
def test_with_valid_data(self) : #vaild하게 저장되는지 테스트
serializer = QuestionSerializer(data={'question_text' : 'abc'})
self.assertEqual(serializer.is_valid(), True)
new_question = serializer.save()
self.assertIsNotNone(new_question.id) #id가 non인지 아닌지 확인
def test_with_invalid_data(self) : #invalid하게 저장된것 테스트
serializer = QuestionSerializer(data={'question_text' : ''})
self.assertEqual(serializer.is_valid(), False)
polls_api/tests.py
'Django' 카테고리의 다른 글
Django 기본 (0) | 2024.04.28 |
---|---|
유저(User)와 기능(투표, 질문) (0) | 2024.04.28 |
시리얼라이저(Serializer)와 에러(Error) (0) | 2024.04.28 |
뷰(View)와 템플릿(template) (1) | 2024.04.28 |