非常に大規模なマルチパッケージ、マルチアプリ Django (1.4.5) プロジェクトを、Django のネイティブ テスト ランナーの使用から py.test (2.3.5) に切り替えています。setup.cfg (py.test オプションを管理するため) と conftest.py (setup.py を無視するため) を作成した後、最低レベルのパッケージである web-framework のテストが検出され、エラーなしで実行されました。Web フレームワークを必要とする上位レベルのパッケージで py.test (setup.cfg および conftest.py を使用) を実行すると、次のエラーが表示されます。
ERROR: Could not import settings 'high_level_package.test_settings' (Is it on sys.path?): No module named web_framework.settings
私は仮想環境を使用しており、web-framework は次の場所の venv にあります: ENV/lib/python2.7/site-packages/
パッケージのルートディレクトリにビルドされたvenvと、プロジェクトパスの外にビルドされたvenvを試してみましたが、役に立ちませんでした。また、上位レベルのパッケージのルート ディレクトリにある Python 対話型コマンド ラインから web_framework.settings をインポートできます。
現在の conftest.py は次の行だけです: collect_ignore = ["setup.py"] その上に次の行を追加しようとしました:
import os
import sys
sys.path.append(os.path.dirname(__file__))
また、上記の sys.path.append で web-framework パッケージへのパスをハードコーディングしてみました。
どちらも機能しませんでした。
関連する場合、私の setup.cfg は次のとおりです。
[pytest]
python_files = *test*.py
norecursedirs = node_modules ENV
addopts = --junitxml=python_result.xml, --doctest-modules
編集:トレースバック関係について言及するのを忘れていました。higher_level_package.test_settings は、higher_level_package.settings をインポートし、それ自体が web_framework.settings をインポートします。