More comprehensive tests
아래와 같이 2개의 메서드 추가해서 테스트 실시
polls/tests.py
import datetime
from django.utils import timezone
from django.test import TestCase
from .models import Question
class QuestionMethodTests(TestCase):
def test_was_published_recently_with_old_question(self):
time = timezone.now() + datetime.timedelta(days=30)
old_question = Question(pub_date=time)
self.assertEqual(old_question.was_published_recently(), False)
def test_was_published_recently_with_recent_question(self):
time = timezone.now() - datetime.timedelta(hours=1)
recent_question = Question(pub_date=time)
self.assertEqual(recent_question.was_published_recently(), True)
def test_was_published_recently_with_future_question(self):
time = timezone.now() + datetime.timedelta(days=30)
future_question = Question(pub_date=time)
self.assertEqual(future_question.was_publish
이제 이를 통해 과거, 최근, 미래의 질문을 제대로 구분해내는지 3가지 테스트가 가능해진다.
Test a view
pub_date가 다가올 미래라는 의미는 해당일이 될 때까지는 그 설문이 보여서는 안됨을 의미한다. 이 버그를 이제 수정해보자.
The Django test client
셀에 테스트 환경을 만든다
>>> from django.test.utils import setup_test_environment
>>> setup_test_environment()
테스트 클라이언트 클래스를 가져온다.
>>> from django.test import Client
>>> client = Client()
>>> response = client.get('/')
>>> response.status_code
404
>>> from django.core.urlresovers import reverse
Traceback (most recent call last):
File "<console>", line 1, in <module>
ImportError: No module named urlresovers
>>> from django.core.urlresolvers import reverse
>>> response = client.get(reverse('polls:index'))
>>> response.status_code
200
>>> response.content
'\n <ul>\n \n <li><a href="/polls/2/">Is this your first visit?</a></li>\n \n <li><a href="/polls/3/">Who i s your favorite Beatle?</a></li>\n \n <li><a href="/polls/1/">What's up?</a></li>\n \n </ul>\n'
>>> reponse = client.get('/polls/')
>>> response.content
'\n <ul>\n \n <li><a href="/polls/2/">Is this your first visit?</a></li>\n \n <li><a href="/polls/3/">Who is your favorite Beatle?</a></li>\n \n <li><a href="/polls/1/">What's up?</a></li>\n \n </ul>\n'
>>> response.context['latest_question_list']
[<Question: Is this your first visit?>, <Question: Who is your favorite Beatle?>, <Question: What's up?>]
>>>
'프로그래밍 Programming' 카테고리의 다른 글
구글스프레드시트를 이용한 트위터 봇 만들기 (2) - "Markov" Setup (0) | 2015.08.17 |
---|---|
구글스프레드시트를 이용한 트위터 봇 만들기 (1) (8) | 2015.08.17 |
[django] Writing our first test (0) | 2015.07.25 |
[django] Use generic views: Less code is better (0) | 2015.07.18 |
[django] Write a simple form (0) | 2015.07.18 |