py.testで実行するテストファイルに何かをインポートする際に問題があります。py.testで使用するために兄弟ディレクトリからモジュールをインポートする
次のように私は、プロジェクトの構造を持っている:
/ProjectName
|
|-- /Title
| |-- file1.py
| |-- file2.py
| |-- file3.py
| |-- __init__.py
|
|-- /test
| |-- test_file1.py
私はtest_file1.py
ファイル内pytestで作業を任意のimport文を取得することができていない、ので、現在はちょうどfile_1.py
で宣言された変数を使用しようとしていますtest_file1.py
を実行すると印刷されます。
file1.pyは含まれています
file1_variable = "Hello"
test_file1.pyは含まれています
import sys
import os
sys.path.append(os.path.abspath('../Title'))
import file1
def test_something():
assert file1.file1_variable == "Hello"
print(file1.file1_variable)
私のテストファイルからのインポート文がPYTHONPATH変数を編集して作品https://stackoverflow.com/a/10272919/5477580から取られています。これにより、test_file1.py
スクリプトを実行し、print
ステートメントを正常に実行することができます。
はしかし、/ProjectName
ディレクトリからpy.test
を実行しようとするとImportError: No module named 'file1'
を言って私にエラーを与える私はそれpytestが可能になり、より良いものを構築することが可能ないくつかの方法はありますか? __init__.py
ファイルに何かを追加する必要がありますか?
を行う必要がありますプロジェクト名ディレクトリからファイルを実行する必要がある場合は、どうもありがとうございました。私は階層的なインポートステートメントの構造を誤解していたと思う。しかし、file1.pyにインポート文があると、私のpytestは再びエラーになるようです。たとえば、file1.pyがfile2.pyからいくつかの関数をインポートすると、pytestはfile2.pyという名前のモジュールがないと言うでしょう。テストファイルに明示的に宣言する必要がありますか? – Shinkawa91