django
官方文档:
https://docs.djangoproject.com/zh-hans/3.0/topics/testing/overview/
Django
的单元测试采用Python
的标准模块,unittest
。该模块以类的形式定义测试。
一、测试文件命名
在django
中,每一个app
中都有一个tests.py
文件,我们在这里写测试内容
。
django
的测试发现基于unittest
模块的内置测试发现。默认情况下,它将在当前工作目录下的任何名为test* .py
的文件中找到并运行测试。
显然,tests.py
是符合test* .py
命名规范的。
如果我们后续的测试越来越多,可能在一个文件中写不下,也可以写在多个测试文件中。例如
test_models.py
test_views.py
test_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测试
将不会使用“实际”
(生产)数据库。将为测试创建单独的空白数据库。
无论测试是通过还是失败,都将在执行所有测试后破坏测试数据库。