【发布时间】:2013-07-17 14:23:47
【问题描述】:
我正在使用 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
我想测试 apps/ 文件夹中的应用。 这是我的代码(在 tests/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 时,数据库没有问题。 (即使有空间数据库和不同的设置源)
【问题讨论】:
-
你在运行测试之前做了同步数据库吗?
-
因为它使用另一个数据库,所以当我运行 syncdb 时,它会同步 postgresql 数据库而不是 spatialite。如果我可以同步这个数据库,我会的。或者也许我不知道如何同步另一个数据库。
标签: database django unit-testing