問題タブ [parameterized-tests]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python-3.x - yamls/json から読み込まれたパラメーター化された値を使用すると、Pytest フィクスチャがスコープを無視する
pytest を使用してテストを実行しています。
module で定義されたすべてのテストの前に前提条件を実行したいpytest.fixture
ので、前提条件関数を作成し、 withで装飾して scope = "module"
、モジュール内のすべてのテストに対して 1 回だけ実行されるようにしました。test_target
この前提条件は、テスト用に準備するために取得する別のフィクスチャを使用します。それに加えて、テスト関数自体も同様に使用され、yaml ファイルからロードされた
test_target
別の関数も使用されました。テストするデバイスは常に、テストするターゲットの情報を含むdevices.yaml ファイルで定義されているため、yaml ファイルからロードされたデータでと をパラメータ化しています。test_param
test_target
test_param
私が得ている問題は、モジュールスコープで実行するように定義している前提条件が関数スコープで実行されていることです。
辞書を test_target に直接割り当ててパラメーター化すると、前提条件が期待どおりに動作することに気付きました (モジュール スコープ) が、デバイス情報をハードコーディングする必要があります。
私は何を間違っていますか?おそらく、この前提条件を実行するための別の回避策がありますか? 私はjsonでそれを試しましたが、yamlとまったく同じ動作をしています
を使用した私のセットアップ:
- WSL-Ubuntu 20.04
- パイソン3.9
- pytest 6.2.5
私のサンプルテストツリー:
station.yaml
station.json
conftest.py
test1.py
test2.py
この出力を取得する前に、コードのようにテストを実行すると
一方、ロードされた値を直接割り当ててテストを実行すると(conftest.pyの行のコメントを外します)
次の出力が得られます。