私のプロジェクトでは、私が単体テストしたいpythonアプリケーションを含むサブディレクトリを持っています。次のように 構造が見えます:Noseへのインポートパスのベースディレクトリを提供します
今my-project/
python-app/
sometool/
__init__.py
foo/
__init__.py
aaa.py
bar/
__init__.py
bbb.py
test/
sometool-tests/
foo-tests/
aaa_test.py
、aaa.py
は、アプリケーションのベースディレクトリを前提としていimport sometool.bar.bbb
などの輸入を、含まれている確かに私のビルド設定でケースである、python-app
です。
aaa_test.py
明らかにそれをテストするためにaaa
をインポートします。 nosetests ./python-app/sometool/test
をメインプロジェクトディレクトリから実行すると、my-project
がインポートのベースディレクトリになります。つまり、そこからsometool.bar.bbb
が見つかりません。インポートは失敗します。
cd
をpython-app
に最初に入力し、そこからnosetests ./sometool/test
を実行すると、すべて正常に動作します。 しかし、これらのテストをショートカットを使って実行するようにVisual Studio Codeを設定したいのですが、それらのコマンドは常にプロジェクトルートから実行されているようです。
Noseに引数として「ベースディレクトリ」を渡す方法はありますか?例えば
import sys
import os
sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), '..')))
import python-app
次に、あなたがあなたのテストでpython-app
をインポートすることができ、コンテキストモジュールからインポート、:
ありがとうございます!すべてのテストファイルに 'context'をインポートする必要がないように、' context.py'の代わりに '__init __。py'にパス操作コードを入れました。また、 'python-app'をインポートする必要はないようです。 –