4

開発中の変更後にテストの再実行を自動化しようとしています。少しスニファーを検索した後、問題ないようでした。しかし、それを実行すると、テストは次のエラーで失敗します:

ERROR: Failure: ImportError (Settings cannot be imported, because environment variable DJANGO_SETTINGS_MODULE is undefined.)

手動で実行すると、合格します。スニファーが機能しない理由がわかりましたか?

4

3 に答える 3

4

次のようなものが機能する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

于 2013-10-25T09:30:50.350 に答える
1

と同じディレクトリにファイルをsniffer作成することで、設定を読み取ることができます。scent.pymanage.py

これが私のものです:

import os
os.environ["DJANGO_SETTINGS_MODULE"] = 'myapp.settings'

これsnifferにより、設定を読み取ることができますが、他の問題が発生します。基本的には、snifferを使用してテストを実行するだけnoseであり、 がインストールされているmanage.py test場合django-noseとは異なります。

Djangoを使用するscent.pyために他に何が必要か知っている人はいますか?snigger

于 2013-01-31T02:55:57.277 に答える
0

問題がどこにあるかを推測しようとしています: 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 の先頭に追加できます (他の方法もありますが、より正確な解決策を提供するにはコードを確認する必要があります)。

于 2012-12-20T16:15:42.780 に答える