对一个app进行test
python manage.py test app-name
django会找到app目录下所有以test为前缀的文件,并运行测试。
测试Model(django文档中的代码)
测试时会另外创建一个数据库,测试完销毁。
import datetime
from django.utils import timezone
from django.test import TestCase
from polls.models import Question
class QuestionMethodTests(TestCase):
def test_was_published_recently_with_future_question(self):
"""
was_published_recently() should return False for questions whose
pub_date is in the future
"""
time = timezone.now() + datetime.timedelta(days=30)
future_question = Question(pub_date=time)
self.assertEqual(future_question.was_published_recently(), False)
测试View
django.test.client 可以模拟用户访问
from django.test import TestCase
from django.core.urlresolvers import reverse
class viewTests(TestCase):
def test_index_view_no_article(self):
"""
If no Articles exist,
'latest_article_list' should be empty
"""
response = self.client.get(reverse('index'))
self.assertEqual(response.status_code, 200)
self.assertQuerysetEqual(response.context['latest_article_list'], [])