database - Custom coverage test runner doesn't create DB -
i'm using django create rest application.
i'm working on unit testing application , instead of doing coverage source=="." manage.py test myapp --settings="mycustomsettings" decided create script can start tests , run them custom conf file , coverage result. here tree :
|-- 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 i want test apps in apps/ folder. here code (in tests/coveragerunner.py)
import os import sys coverage import coverage sys.path.append(os.path.join(os.path.dirname(__file__), "../")) os.environ['django_settings_module'] = 'tests.settings' def main(): """ run tests , generates coverage report. """ cov = coverage() cov.erase() cov.start() django.conf import settings 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() i'm using geodjango.db spatialite db default db tests. script takes settings django when run it, seems database empty. doesn't sync db on own.
databaseerror: no such table: me_auth_emailuser is there way can tell django sync db before running tests or maybe did wrong ? thanks.
ps : when used manager.py there no problem db. (even spatialite db , different settings source)
a quick , dirty solution goes follows:
- set database engine sqlite, non-tests.
- make syncdb create template test database.
- now tests should work.
- don't forget set database engine postgesql.
Comments
Post a Comment