フィクスチャBがフィクスチャAの値を指定して可変数のパラメータを返すことができるようにpy.testを設定したいと思います。 3つのオブジェクトのそれぞれについて、可変数の属性をテストしたいと思います。入力に応じて可変数の値を持つ器具
@pytest.fixture(params=[Object1(), Object2(), Object3()])
def my_object(request):
return request.param
def test_keys(my_object):
for key in my_object.valid_keys:
assert getattr(my_object, key) > 0, "mock test failed"
上記実装は、機能的であるが、試験したvalid_keys
のテスト出力から見ることは容易ではありません。また、いずれかのテストが失敗した場合、後続のテストは実行されません。理想的には、以下のようなセットアップが必要です。
@pytest.fixture(params=[Object1(), Object2(), Object3()])
def my_object(request):
return request.param
@pytest.fixture
def valid_key(my_object):
# Return each valid key separately for each input object
def test_keys(my_objects, valid_key):
assert getattr(my_object, valid_key) > 0, "mock test failed"
この構造は、すべてのテストが独立して実行されていることを確認し、私はカバレッジを観察し、より簡単に私のテストを分析することができるようになるなど
はい、残念ながら、有効なキーの数は可変です。 –