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的測試發(fā)現基于unittest模塊的內置測試發(fā)現。默認情況下,它將在當前工作目錄下的任何名為test* .py的文件中找到并運行測試。
顯然,tests.py是符合test* .py命名規(guī)范的。
如果我們后續(xù)的測試越來越多,可能在一個文件中寫不下,也可以寫在多個測試文件中。例如
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中的模型時,創(chuàng)建測試數據是必不可少的。
django的模型測試 | Model測試將不會使用“實際”(生產)數據庫。將為測試創(chuàng)建單獨的空白數據庫。
無論測試是通過還是失敗,都將在執(zhí)行所有測試后破壞測試數據庫。