開発中の変更後にテストの再実行を自動化しようとしています。少しスニファーを検索した後、問題ないようでした。しかし、それを実行すると、テストは次のエラーで失敗します:
ERROR: Failure: ImportError (Settings cannot be imported, because environment variable DJANGO_SETTINGS_MODULE is undefined.)
手動で実行すると、合格します。スニファーが機能しない理由がわかりましたか?
次のようなものが機能するscent.py
はずです:
from subprocess import call
from sniffer.api import runnable
@runnable
def execute_tests(*args):
fn = [ 'python', 'manage.py', 'test' ]
fn += args[1:]
return call(fn) == 0
として呼び出すことができますsniffer -x appName
。
と同じディレクトリにファイルをsniffer
作成することで、設定を読み取ることができます。scent.py
manage.py
これが私のものです:
import os
os.environ["DJANGO_SETTINGS_MODULE"] = 'myapp.settings'
これsniffer
により、設定を読み取ることができますが、他の問題が発生します。基本的には、sniffer
を使用してテストを実行するだけnose
であり、 がインストールされているmanage.py test
場合django-nose
とは異なります。
Djangoを使用するscent.py
ために他に何が必要か知っている人はいますか?snigger
問題がどこにあるかを推測しようとしています: settings.py ファイルの位置を明示的に設定する必要があるようです。
サブプロセス呼び出しからテストを実行している場合は、次のコマンドを使用できます。
call(["django-admin.py", "test --settings=your_project.settings"])
それ以外の場合は、次のコマンドで環境変数を設定できます。
import os
os.environ['DJANGO_SETTINGS_MODULE'] = 'your_project.settings'
(your_project を django プロジェクトの名前に変更します)
「./manage.py tests」のようなコマンドを実行している場合は、前の行を manage.py の先頭に追加できます (他の方法もありますが、より正確な解決策を提供するにはコードを確認する必要があります)。