【发布时间】:2021-09-11 02:13:35
【问题描述】:
以下 pytest 夹具
@pytest.fixture(scope="module")
def gen_factory():
def _gen_factory(owner: str):
value = ...
yield value
print('gen teardown')
yield _gen_factory
产生多次使用的工厂。
在一个测试用例中,我使用该夹具创建两个工厂并使用它们生成一些值:
@pytest.mark.asyncio
def test_case(gen_factory):
gen1 = gen_factory('owner1')
gen2 = gen_factory('owner2')
val1 = next(gen1)
val2 = next(gen2)
...
next(gen1)
next(gen2)
发生的情况是 print('gen teardown') 仅被调用一次,然后循环关闭,第二个 next() 调用引发 StopIteration 错误。
我在这里缺少什么?为什么第二次打印没有发生?
【问题讨论】:
标签: python pytest generator factory fixtures