Рассмотрим следующий 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
.
@pytest.mark.parametrize("instance", timeline.instances)
def test_timeline(timeline):
assert instance % 2 == 0
но это приводит к
AttributeError: 'function' object has no attribute 'instances'
Как я понимаю, в приборах Pytest функция "становится" ее возвращаемым значением, но это, похоже, еще не произошло в то время, когда тест параметризуется. Как настроить тест по желанию?