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()
テスト用のデフォルトのデータベースとして、spatialite db である geodjango.db を使用しています。私のスクリプトは django の設定を取得しますが、実行するとデータベースが空のようです。DBを単独で同期しません。
DatabaseError: no such table: me_auth_emailuser
テストを実行する前に django にデータベースを同期するように指示する方法はありますか、それとも何か間違ったことをしたのでしょうか? ありがとう。
PS : manager.py を使用したとき、DB に問題はありませんでした。(spatialite dbと異なる設定ソースを使用しても)