我认为以下示例是一个非常常见的用例:
更改bin/elasticsearch -Ecluster.initial_master_nodes=master-a,master-b,master-c
的范围会导致@pytest.fixture(scope="module")
。
此外,ScopeMismatch: You tried to access the 'function' scoped fixture 'event_loop' with a 'module' scoped request object, involved factories
和test_insert
协程不需要event_loop参数,因为通过传递连接已经可以访问该循环。
有什么办法解决这两个问题吗?
test_find
答案 0 :(得分:0)
解决方案是使用模块范围重新定义event_loop固定装置。将其包含在测试文件中。
@pytest.yield_fixture(scope="module")
def event_loop():
loop = asyncio.get_event_loop()
yield loop
loop.close()
答案 1 :(得分:0)
在github中针对pytest-asyncio(link)提出了类似的ScopeMismatch问题。解决方案(如下)对我有用:
@pytest.yield_fixture(scope='class')
def event_loop(request):
loop = asyncio.get_event_loop_policy().new_event_loop()
yield loop
loop.close()