考慮以下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
使用Pytest夾具,timeline
,其本身所具有的屬性instances
。在測試中迭代此屬性,以便只有在timeline.instances
中的每個instance
的斷言成立時才通過測試。
但是,我真正想要做的是產生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燈具的功能「變成了」它的返回值,但這似乎沒有在當時尚未發生該測試是參數化的。我怎樣才能以所需的方式設置測試?