Рассмотрим следующий 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
. Этот атрибут повторяется в тесте, так что тест проходит только в том случае, если утверждение выполняется для каждого 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 светильники функция «становится» возвращаемое значение, но это, кажется, не произошло еще в то время, тест параметризуется. Как я могу настроить тест по желанию?