我正在使用 Django 创建一个 Rest 应用程序。
我目前正在对我的应用程序进行单元测试,coverage source=="." manage.py test myapp --settings="mycustomsettings"
我决定创建一个脚本来启动我的测试并使用自定义 conf 文件和覆盖结果运行它们,而不是这样做。这是我的树:
|-- apps
| |-- __init__.py
| |-- me_api
| |-- me_auth
| |-- me_core
| |-- me_import
| `-- me_payment
|-- manage.py
|-- settings.py
|-- settings.pyc
|-- tests
| |-- coveragerunner.py
| |-- geodjango.db
| |-- __init__.py
| |-- local_settings.py
| `-- settings.py
|-- urls.py
`-- urls.pyc
我想测试应用程序/文件夹中的应用程序。这是我的代码(在测试/coveragerunner.py 中)
import os
import sys
from coverage import coverage
sys.path.append(os.path.join(os.path.dirname(__file__), "../"))
os.environ['DJANGO_SETTINGS_MODULE'] = 'tests.settings'
def main():
"""
Run tests and generates a coverage report.
"""
cov = coverage()
cov.erase()
cov.start()
from django.conf import settings
from django.test.utils import get_runner
TestRunner = get_runner(settings)
test_runner = TestRunner()
failures = test_runner.run_tests(['me_api'])
cov.stop()
if __name__ == '__main__':
main()
我正在使用 geodjango.db 这是一个空间数据库作为我的默认测试数据库。我的脚本采用 django 的设置,但是当我运行它时,数据库似乎是空的。我不会自行同步数据库。
DatabaseError: no such table: me_auth_emailuser
有没有办法告诉 django 在运行测试之前同步数据库,或者我做错了什么?谢谢。
PS:当我使用 manager.py 时,数据库没有问题。(即使使用空间数据库和不同的设置源)