django官方文档:
https://docs.djangoproject.com/zh-hans/3.0/topics/testing/overview/
Django的单元测试采用Python的标准模块,unittest。该模块以类的形式定义测试。

截屏2020-05-0313.31.22.png
一、测试文件命名
在django中,每一个app中都有一个tests.py文件,我们在这里写测试内容。
django的测试发现基于unittest模块的内置测试发现。默认情况下,它将在当前工作目录下的任何名为test* .py的文件中找到并运行测试。
显然,tests.py是符合test* .py命名规范的。
如果我们后续的测试越来越多,可能在一个文件中写不下,也可以写在多个测试文件中。例如
test_models.pytest_views.pytest_utils.py
二、编写测试用例
django的测试用例都继承 django.test.TestCase, 这个类本身继承python内置的unittest.TestCase
from django.test import TestCase
from myapp.models import Animal
class AnimalTestCase(TestCase):
def setUp(self):
Animal.objects.create(name="lion", sound="roar")
Animal.objects.create(name="cat", sound="meow")
def test_animals_can_speak(self):
lion = Animal.objects.get(name="lion")
cat = Animal.objects.get(name="cat")
self.assertEqual(lion.speak(), 'The lion says "roar"')
self.assertEqual(cat.speak(), 'The cat says "meow"')
这里的
. setUp()是测试用例的配置函数,是可选的,一般用来准备数据或配置。测试函数应该以test开头,如这里的test_animals_can_speak
这里的测试函数中有两个assertEqual测试
三、运行测试
编写测试后,我们就可以运行测试了。通过命令
>>> ./manage.py test
或者
>>> python manager.py test
可以运行所有的测试用例。
也可以运行指定的模块,类,函数
>>> ./manager.py test animals
# 仅运行运行 animals 模块的测试用例
四、测试数据库
当我们要测试models中的模型时,创建测试数据是必不可少的。
django的模型测试 | Model测试将不会使用“实际”(生产)数据库。将为测试创建单独的空白数据库。
无论测试是通过还是失败,都将在执行所有测试后破坏测试数据库。