Tôi chưa bao giờ viết bất kỳ bài kiểm tra nào trong cuộc sống của mình, nhưng tôi muốn bắt đầu viết các bài kiểm tra cho các dự án Django của tôi. Tôi đã đọc một số bài viết về các bài kiểm tra và quyết định cố gắng viết một số bài kiểm tra cho một ứng dụng Django cực kỳ đơn giản hoặc bắt đầu.Viết bài kiểm tra tốt cho các ứng dụng Django
Ứng dụng này có hai quan điểm (một cái nhìn danh sách, và một cái nhìn chi tiết) và một mô hình với bốn lĩnh vực:
class News(models.Model):
title = models.CharField(max_length=250)
content = models.TextField()
pub_date = models.DateTimeField(default=datetime.datetime.now)
slug = models.SlugField(unique=True)
Tôi muốn cho bạn thấy tập tin tests.py tôi và hỏi:
Có hợp lý không?
Tôi thậm chí có thử nghiệm cho đúng thứ không?
Có các phương pháp hay nhất mà tôi không theo dõi và bạn có thể chỉ cho tôi không?
tests.py của tôi (nó chứa 11 kiểm tra):
# -*- coding: utf-8 -*-
from django.test import TestCase
from django.test.client import Client
from django.core.urlresolvers import reverse
import datetime
from someproject.myapp.models import News
class viewTest(TestCase):
def setUp(self):
self.test_title = u'Test title: bąrekść'
self.test_content = u'This is a content 156'
self.test_slug = u'test-title-bareksc'
self.test_pub_date = datetime.datetime.today()
self.test_item = News.objects.create(
title=self.test_title,
content=self.test_content,
slug=self.test_slug,
pub_date=self.test_pub_date,
)
client = Client()
self.response_detail = client.get(self.test_item.get_absolute_url())
self.response_index = client.get(reverse('the-list-view'))
def test_detail_status_code(self):
"""
HTTP status code for the detail view
"""
self.failUnlessEqual(self.response_detail.status_code, 200)
def test_list_status_code(self):
"""
HTTP status code for the list view
"""
self.failUnlessEqual(self.response_index.status_code, 200)
def test_list_numer_of_items(self):
self.failUnlessEqual(len(self.response_index.context['object_list']), 1)
def test_detail_title(self):
self.failUnlessEqual(self.response_detail.context['object'].title, self.test_title)
def test_list_title(self):
self.failUnlessEqual(self.response_index.context['object_list'][0].title, self.test_title)
def test_detail_content(self):
self.failUnlessEqual(self.response_detail.context['object'].content, self.test_content)
def test_list_content(self):
self.failUnlessEqual(self.response_index.context['object_list'][0].content, self.test_content)
def test_detail_slug(self):
self.failUnlessEqual(self.response_detail.context['object'].slug, self.test_slug)
def test_list_slug(self):
self.failUnlessEqual(self.response_index.context['object_list'][0].slug, self.test_slug)
def test_detail_template(self):
self.assertContains(self.response_detail, self.test_title)
self.assertContains(self.response_detail, self.test_content)
def test_list_template(self):
self.assertContains(self.response_index, self.test_title)