は以下のPytestを考えてみパラメータ化する方法:Pytest器具
はimport pytest
class TimeLine(object):
instances = [0, 1, 2]
@pytest.fixture
def timeline():
return TimeLine()
def test_timeline(timeline):
for instance in timeline.instances:
assert instance % 2 == 0
if __name__ == "__main__":
pytest.main([__file__])
テストtest_timeline
自体が属性instances
を持ってPytest器具、timeline
を、使用しています。この属性はテストで反復されるため、instance
のアサーションがすべてtimeline.instances
にある場合にのみテストに合格します。
私が実際にやってみたいのは、3つのテストを生成することです。そのうち2つは合格、1つは失敗します。私は
@pytest.mark.parametrize("instance", timeline.instances)
def test_timeline(timeline):
assert instance % 2 == 0
を試みたが、私はそれを理解するように、これは、
AttributeError: 'function' object has no attribute 'instances'
につながるPytest器具に関数が戻り値「になる」、これは一度、まだ起こっていないようですテストがパラメータ化されます。希望の方法でテストを設定するにはどうすればよいですか?