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的派生类),全自动创建检测集随后运作检测。
留意:假如检测是根据数据库查询浏览的(载入、查看Model),一定要用django.test.TestCase创建检测类,而不必用unittest.TestCase。
Runing tests
实行文件目录下任何的检测(全部的test*.py文件):
$ python manage.py test
实行animals新项目下tests包内的检测:
$ python manage.py test animals.tests
实行animals新项目里的test检测:
$ python manage.py test animals
独立实行某一test case:
$ python manage.py test animals.tests.AnimalTestCase
独立实行某一测试标准:
$ 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
数据库查询
检测是必须数据库查询的,django会为检测独立转化成数据库查询。无论你的检测是不是根据,如果你全部的检测都实行之后,这一检测数据库查询便会被消毁。
默认设置状况下,检测数据库查询的名称是test_DATABASE_NAME,DATABASE_NAME就是你在settings.py里配备的数据库查询名.假如 你需要给检测数据库查询一个别的的名称,在settings.py中特定TEST_DATABASE_NAME的值。应用sqlite3时,数据库查询是在运行内存中建立的。
除开数据库查询是独立建立的之外,检测工具会采用同样的数据库查询配备--DATABASE_ENGINE, DATABASE_USER, DATABASE_HOST这些.建立检测数据库查询的客户DATABASE_USER(settings中)特定,因此你需要确定 DATABASE_USER有充足的管理权限去建立数据库。
检测实行次序
为了确保全部的检测都从整洁的数据库查询逐渐,实行次序如下所示:
1.全部的TestCase派生类最先运作。
2.全部别的的单元测试卷(unittest.TestCase,SimpleTestCase,TransactionTestCase)。
3.其他的检测(例如doctests等)
加快检测
可以将PASSWORD_HASHERS设定为迅速的优化算法:
PASSWORD_HASHERS = ( 'django.contrib.auth.hashers.MD5PasswordHasher', )
做猪小侠源码的代理,提供一站式服务
如果你不懂得搭建网站或者服务器,小程序,源码之类的怎么办? 第一通过本站学习各种互联网的技术 第二就是联系客服,我帮帮你搭建(当然要收取部分的费用) 第三成为我们的代理,我们提供整套的服务。