您可以将测试放在
tests/应用程序的子目录(而不是
tests.py文件)中,并
tests/models.py在仅测试模型中包含。
然后提供一个测试运行脚本(示例),其中包含您的
tests/“ app”
INSTALLED_APPS。(从真实项目运行应用程序测试时,这是行不通的,因为在真实项目中没有测试应用程序
INSTALLED_APPS,但是我很少发现从项目运行可重复使用的应用程序测试很有用,并且Django
1.6+默认不是。 )
( 注意 :如果您的测试用例子类
TransactionTestCase会大大降低测试速度,并且仅在Django
1.7+中完全不起作用,则下面描述的替代动态方法仅在Django 1.1+中有效,而在Django 1.7+中则不再可用。用它。)
在测试开始时(即在setUp方法中,或在一组doctests的开始处),可以动态地添加
"myapp.tests"到INSTALLED_APPS设置中,然后执行以下操作:
from django.core.management import call_commandfrom django.db.models import loadingloading.cache.loaded = Falsecall_command('syncdb', verbosity=0)然后,在测试结束时,应通过还原旧版本的INSTALLED_APPS并再次清除应用程序缓存来进行清理。
此类封装了模式,因此不会使您的测试代码杂乱无章。



