1 本地库的测试
一个完整的测试过程,应该包括测试方法、测试工具、测试范围、测试种类、测试的软件硬件环境、测试进度、测试人员的分工和职责以及测试流程进行详细的定义和整体的描述。
包括测试资源,工具,环境,风险评估,缺陷跟踪方式的说明。
但是这里只表达自动化测试代码的结构。
我们已经知道了如何运行我们的测试以及我们需要测试什么样的东西,如果不清楚请查看文末的参考链接, 让我们看一些实际的例子。
这应该可以让您了解测试的工作原理,以及您还能做什么。
1.1 模型
如上所述,我们应该测试任何属于我们设计的一部分或由我们编写的代码定义的内容,而不是已经由 Django 或 Python 开发团队测试过的库/代码。
例如,考虑下面的模型。在这里,我们应该测试所有字段的标签,因为即使我们没有明确指定其中的大多数,我们有一个设计来说明这些值应该是什么。
如果我们不测试这些值,那么我们就不知道字段标签是否具有其预期值。 同样,虽然我们相信 Django会创建一个指定长度的字段Author,但值得为此长度指定一个测试以确保它按计划实现。
class Owner(models.Model):
first_name = models.CharField(max_length=100)
last_name = models.CharField(max_length=100)
date_of_birth = models.DateField(null=True, blank=True)
date_of_death = models.DateField('Died', null=True, blank=True)
def get_absolute_url(self):
return reverse('author-detail', args=[str(self.id)])
def __str__(self):
return f'{self.last_name}, {self.first_name}'
打开我们的 /blog/tests/test_models.py,并将任何现有代码替换为模型的以下Owner测试代码。
在这里,您将看到我们首先使用描述性名称从中导入TestCase并派生我们的测试类 (AuthorModel),以便我们可以轻松识别测试输出中的任何失败测试。
然后,我们调用setUpTestData()创建一个作者对象,我们将在任何测试中使用但不会修改该对象。
from django.test import TestCase
from blog.models import Author
class OwnerModelTest(TestCase):
@classmethod
def setUpTestData(cls):
# Set up non-modified objects used by all test methods
Author.objects.create(first_name='Big', last_name='Bob')
def test_first_name_label(self):
author = Owner.objects.get(id=1)
field_label = author._meta.get_field('first_name').verbose_name
self.assertEqual(field_label, 'first name')
def test_date_of_dea