問題タブ [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.

0 投票する
0 に答える
24 参照

python-3.x - yamls/json から読み込まれたパラメーター化された値を使用すると、Pytest フィクスチャがスコープを無視する

pytest を使用してテストを実行しています。

module で定義されたすべてのテストの前に前提条件を実行したいpytest.fixtureので、前提条件関数を作成し、 withで装飾して scope = "module"、モジュール内のすべてのテストに対して 1 回だけ実行されるようにしました。test_targetこの前提条件は、テスト用に準備するために取得する別のフィクスチャを使用します。それに加えて、テスト関数自体も同様に使用され、yaml ファイルからロードされた test_target別の関数も使用されました。テストするデバイスは常に、テストするターゲットの情報を含むdevices.yaml ファイルで定義されているため、yaml ファイルからロードされたデータでと をパラメータ化しています。test_paramtest_targettest_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の行のコメントを外します)

次の出力が得られます。