Django使用unittest模塊進(jìn)行單元測(cè)試過程解析
Django測(cè)試框架非常簡單,首選方法是使用python標(biāo)準(zhǔn)庫中的unittest模塊。
Writing tests
Django的單元測(cè)試使用python的unittest模塊,這個(gè)模塊使用基于類的方法來定義測(cè)試。類名為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):
"""Animals that can speak are correctly identified"""
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"')
運(yùn)行測(cè)試的時(shí)候,測(cè)試程序會(huì)在所有以test開頭的文件中查找所有的test cases(inittest.TestCase的子類),自動(dòng)建立測(cè)試集然后運(yùn)行測(cè)試。
注意:如果測(cè)試是基于數(shù)據(jù)庫訪問的(讀取、查詢Model),一定要用django.test.TestCase建立測(cè)試類,而不要用unittest.TestCase。
Runing tests
執(zhí)行目錄下所有的測(cè)試(所有的test*.py文件):
$ python manage.py test
執(zhí)行animals項(xiàng)目下tests包里的測(cè)試:
$ python manage.py test animals.tests
執(zhí)行animals項(xiàng)目里的test測(cè)試:
$ python manage.py test animals
單獨(dú)執(zhí)行某個(gè)test case:
$ python manage.py test animals.tests.AnimalTestCase
單獨(dú)執(zhí)行某個(gè)測(cè)試方法:
$ python manage.py test animals.tests.AnimalTestCase.test_animals_can_speak
為測(cè)試文件提供路徑:
$ python manage.py test animals/
通配測(cè)試文件名:
$ python manage.py test --pattern="tests_*.py"
啟用warnings提醒:
$ python -Wall manage.py test
數(shù)據(jù)庫
測(cè)試是需要數(shù)據(jù)庫的,django會(huì)為測(cè)試單獨(dú)生成數(shù)據(jù)庫。不管你的測(cè)試是否通過,當(dāng)你所有的測(cè)試都執(zhí)行過后,這個(gè)測(cè)試數(shù)據(jù)庫就會(huì)被銷毀。
默認(rèn)情況下,測(cè)試數(shù)據(jù)庫的名字是test_DATABASE_NAME,DATABASE_NAME是你在settings.py里配置的數(shù)據(jù)庫名.如果 你需要給測(cè)試數(shù)據(jù)庫一個(gè)其他的名字,在settings.py中指定TEST_DATABASE_NAME的值。使用sqlite3時(shí),數(shù)據(jù)庫是在內(nèi)存中創(chuàng)建的。
除了數(shù)據(jù)庫是單獨(dú)創(chuàng)建的以外,測(cè)試工具會(huì)使用相同的數(shù)據(jù)庫配置--DATABASE_ENGINE, DATABASE_USER, DATABASE_HOST等等.創(chuàng)建測(cè)試數(shù)據(jù)庫的用戶DATABASE_USER(settings中)指定,所以你需要確認(rèn) DATABASE_USER有足夠的權(quán)限去創(chuàng)建數(shù)據(jù)庫。
測(cè)試執(zhí)行順序
為了保證所有的測(cè)試都從干凈的數(shù)據(jù)庫開始,執(zhí)行順序如下:
1.所有的TestCase子類首先運(yùn)行。
2.所有其他的單元測(cè)試(unittest.TestCase,SimpleTestCase,TransactionTestCase)。
3.其它的測(cè)試(例如doctests等)
加速測(cè)試
可以將PASSWORD_HASHERS設(shè)置為更快的算法:
PASSWORD_HASHERS = ( 'django.contrib.auth.hashers.MD5PasswordHasher', )
以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
使用Python來編寫HTTP服務(wù)器的超級(jí)指南
這篇文章主要介紹了使用Python來編寫HTTP服務(wù)器的超級(jí)指南,同時(shí)介紹了基于Python框架的web服務(wù)器的編寫方法,譯文從理論到實(shí)現(xiàn)講得都很生動(dòng)詳細(xì),十分推薦!需要的朋友可以參考下2016-02-02
django執(zhí)行原生SQL查詢的實(shí)現(xiàn)
本文主要介紹了django執(zhí)行原生SQL查詢的實(shí)現(xiàn),主要有兩種方法實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-08-08
Python基于similarities實(shí)現(xiàn)文本語義相似度計(jì)算和文本匹配搜索
similarities?實(shí)現(xiàn)了多種相似度計(jì)算、匹配搜索算法,支持文本、圖像,python3開發(fā),下面我們就來看看如何使用similarities實(shí)現(xiàn)文本語義相似度計(jì)算和文本匹配搜索吧2024-03-03
Python3中數(shù)據(jù)校驗(yàn)機(jī)制詳解
在日常編碼環(huán)節(jié),很大比例的錯(cuò)誤處理工作和參數(shù)的輸入有關(guān),所以這篇文章主要來和大家介紹一下Python3中的數(shù)據(jù)校驗(yàn)機(jī)制,感興趣的可以了解下2024-04-04
據(jù)Python爬蟲不靠譜預(yù)測(cè)可知今年雙十一銷售額將超過6000億元
已經(jīng)是十一月十號(hào)了,雙十一即將到來,電商早已預(yù)熱多日,為了在實(shí)戰(zhàn)中獲得能力的提升,本篇文章手把手帶你用Python來預(yù)測(cè)一下今年雙十一的銷售額將會(huì)達(dá)到多少,大家可以在過程中查缺補(bǔ)漏,提升水平2021-11-11

