Django使用unittest模塊進行單元測試過程解析
Django測試框架非常簡單,首選方法是使用python標準庫中的unittest模塊。
Writing tests
Django的單元測試使用python的unittest模塊,這個模塊使用基于類的方法來定義測試。類名為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"')
運行測試的時候,測試程序會在所有以test開頭的文件中查找所有的test cases(inittest.TestCase的子類),自動建立測試集然后運行測試。
注意:如果測試是基于數(shù)據(jù)庫訪問的(讀取、查詢Model),一定要用django.test.TestCase建立測試類,而不要用unittest.TestCase。
Runing tests
執(zhí)行目錄下所有的測試(所有的test*.py文件):
$ python manage.py test
執(zhí)行animals項目下tests包里的測試:
$ python manage.py test animals.tests
執(zhí)行animals項目里的test測試:
$ python manage.py test animals
單獨執(zhí)行某個test case:
$ python manage.py test animals.tests.AnimalTestCase
單獨執(zhí)行某個測試方法:
$ python manage.py test animals.tests.AnimalTestCase.test_animals_can_speak
為測試文件提供路徑:
$ python manage.py test animals/
通配測試文件名:
$ python manage.py test --pattern="tests_*.py"
啟用warnings提醒:
$ python -Wall manage.py test
數(shù)據(jù)庫
測試是需要數(shù)據(jù)庫的,django會為測試單獨生成數(shù)據(jù)庫。不管你的測試是否通過,當你所有的測試都執(zhí)行過后,這個測試數(shù)據(jù)庫就會被銷毀。
默認情況下,測試數(shù)據(jù)庫的名字是test_DATABASE_NAME,DATABASE_NAME是你在settings.py里配置的數(shù)據(jù)庫名.如果 你需要給測試數(shù)據(jù)庫一個其他的名字,在settings.py中指定TEST_DATABASE_NAME的值。使用sqlite3時,數(shù)據(jù)庫是在內存中創(chuàng)建的。
除了數(shù)據(jù)庫是單獨創(chuàng)建的以外,測試工具會使用相同的數(shù)據(jù)庫配置--DATABASE_ENGINE, DATABASE_USER, DATABASE_HOST等等.創(chuàng)建測試數(shù)據(jù)庫的用戶DATABASE_USER(settings中)指定,所以你需要確認 DATABASE_USER有足夠的權限去創(chuàng)建數(shù)據(jù)庫。
測試執(zhí)行順序
為了保證所有的測試都從干凈的數(shù)據(jù)庫開始,執(zhí)行順序如下:
1.所有的TestCase子類首先運行。
2.所有其他的單元測試(unittest.TestCase,SimpleTestCase,TransactionTestCase)。
3.其它的測試(例如doctests等)
加速測試
可以將PASSWORD_HASHERS設置為更快的算法:
PASSWORD_HASHERS = ( 'django.contrib.auth.hashers.MD5PasswordHasher', )
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
python?rsa和Crypto.PublicKey.RSA?模塊詳解
這篇文章主要介紹了python?rsa和Crypto.PublicKey.RSA?模塊,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-04-04
詳談python3中用for循環(huán)刪除列表中元素的坑
下面小編就為大家分享一篇詳談python3中用for循環(huán)刪除列表中元素的坑,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-04-04
Python實現(xiàn)識別手寫數(shù)字 簡易圖片存儲管理系統(tǒng)
這篇文章主要為大家詳細介紹了Python實現(xiàn)識別手寫數(shù)字,簡易圖片存儲管理系統(tǒng),具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-01-01

