首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >pytest-异步RuntimeError:不能在另一个循环运行时运行事件循环

pytest-异步RuntimeError:不能在另一个循环运行时运行事件循环
EN

Stack Overflow用户
提问于 2022-05-25 02:34:13
回答 2查看 977关注 0票数 0

当尝试使用pytest-异步和pytest-playwright执行UI自动操作时,我得到了异常,例如: RuntimeError:无法在另一个循环运行时运行事件循环。

代码结构:

代码语言:javascript
运行
复制
ui2/conftest.py
ui2/test_bing.py

ui2/conftest.py

代码语言:javascript
运行
复制
import pytest
import asyncio


@pytest.fixture(scope="session")
def event_loop():
    """重写event_loop"""

    loop = asyncio.get_event_loop()
    yield loop
    loop.close()

ui2/test_bing.py

代码语言:javascript
运行
复制
import pytest

from playwright.async_api import Page


@pytest.mark.asyncio
async def test_bing(page: Page):
    await page.goto("http://www.bing.com")

env:

代码语言:javascript
运行
复制
pytest==7.1.2
pytest-asyncio==0.18.3
pytest-playwright==0.3.0

详细异常如下:

EN

回答 2

Stack Overflow用户

发布于 2022-05-31 19:34:54

短期解决方案。

安装nest_asyncio:

代码语言:javascript
运行
复制
pip install nest_asyncio

然后将其添加到主conftest.py文件中:

代码语言:javascript
运行
复制
import nest_asyncio
nest_asyncio.apply()

请在这里找到更详细的解释:

https://pypi.org/project/nest-asyncio/

票数 0
EN

Stack Overflow用户

发布于 2022-07-26 01:39:03

因为您是从async_api导入的,所以听起来像是要编写异步集成测试,希望同时运行。pytest-asyncio连续运行协同测试,因此您需要使用pytest-asyncio-cooperative。(如果您希望测试连续运行,则应该使用from playwright.sync_api import Page。)我建议:

安装pytest-asyncio-cooperative

代码语言:javascript
运行
复制
pip install pytest-asyncio-cooperative

  1. ui2/conftest.py中移除event_loop夹具。pytest-asyncio-cooperative隐式地在同一个事件循环上运行所有测试协同线。

使用@pytest.mark.asyncio_cooperative标记异步测试的

代码语言:javascript
运行
复制
import pytest

from playwright.async_api import Page


@pytest.mark.asyncio_cooperative
async def test_bing(page: Page):
    await page.goto("http://www.bing.com")

  1. 使用-p no:asyncio选项运行测试。pytest-aysnciopytest-asyncio-cooperative不兼容,因此必须禁用或禁用pytest-asyncio-cooperative

代码语言:javascript
运行
复制
pytest -p no:asyncio
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72371401

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档