django 测试 (一)

django官方文档:
https://docs.djangoproject.com/zh-hans/3.0/topics/testing/overview/

Django的单元测试采用Python的标准模块,unittest。该模块以类的形式定义测试。

django 测试 (一)_第1张图片
截屏2020-05-0313.31.22.png

一、测试文件命名

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"')
  1. 这里的. setUp()是测试用例的配置函数,是可选的,一般用来准备数据配置

  2. 测试函数应该以test开头,如这里的test_animals_can_speak
    这里的测试函数中有两个assertEqual测试

三、运行测试

编写测试后,我们就可以运行测试了。通过命令

>>> ./manage.py test

或者

>>> python manager.py test

可以运行所有的测试用例。

也可以运行指定的模块,函数

>>> ./manager.py test animals 
# 仅运行运行 animals 模块的测试用例

四、测试数据库

当我们要测试models中的模型时,创建测试数据是必不可少的
django模型测试 | Model测试将不会使用“实际”(生产)数据库。将为测试创建单独的空白数据库。

无论测试是通过还是失败,都将在执行所有测试后破坏测试数据库。

你可能感兴趣的:(django 测试 (一))