我可以在不将此应用合并到项目中的情况下为我的可重用 Django 应用启动测试吗?
我的应用程序使用了一些模型,因此需要提供(TEST_)DATABASE_*
设置。我应该在哪里存储它们以及我应该如何启动测试?
对于 Django 项目,我可以使用 manage.py test
运行测试;当我在我的独立应用程序中使用 django-admin.py test
时,我得到:
Error: Settings cannot be imported, because environment variable DJANGO_SETTINGS_MODULE is undefined.
此处的最佳做法是什么?
最佳答案
Django (>= 1.4) test runner 的正确用法如下:
import django, sys
from django.conf import settings
settings.configure(DEBUG=True,
DATABASES={
'default': {
'ENGINE': 'django.db.backends.sqlite3',
}
},
ROOT_URLCONF='myapp.urls',
INSTALLED_APPS=('django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.admin',
'myapp',))
try:
# Django < 1.8
from django.test.simple import DjangoTestSuiteRunner
test_runner = DjangoTestSuiteRunner(verbosity=1)
except ImportError:
# Django >= 1.8
django.setup()
from django.test.runner import DiscoverRunner
test_runner = DiscoverRunner(verbosity=1)
failures = test_runner.run_tests(['myapp'])
if failures:
sys.exit(failures)
DjangoTestSuiteRunner 和 DiscoverRunner 具有大部分兼容的接口(interface)。
有关更多信息,您应该查阅“定义测试运行程序”文档:
- DjangoTestSuiteRunner (Django >=1.4, <1.8)
- DiscoverRunner (Django >=1.8)
关于django - 如何启动 Django 可重用应用程序的测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3841725/