问题标签 [pytest-asyncio]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - Pytest 跳过测试说“未安装异步”
测试以下代码时
pytest -vvv
在项目环境中运行时收到的警告:
我确实pytest-asyncio
安装了。我通过pytest --trace-config
在项目的虚拟环境中运行进行了验证
python - 使用 @pytest.fixture(scope="module") 和 @pytest.mark.asyncio
我认为下面的示例是一个非常常见的用例:
- 一次创建到数据库的连接,
- 传递此连接以测试哪些插入数据
- 将连接传递给验证数据的测试。
改变@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
andtest_find
协程不需要 event_loop 参数,因为通过传递连接已经可以访问循环。
任何想法如何解决这两个问题?
pytest - 同时运行测试
我想使用 asyncio (/curio/trio) 和 pytest 同时运行几个测试,但我找不到任何相关信息。我需要自己安排吗?如果我这样做了,有没有办法有一个很好的输出来分隔(子)测试用例?
这是我正在尝试的一个小玩具示例:
pytest - 如何使用 pytest 对 asyncio call_later 进行单元测试?
我正在编写一些基于异步的代码,并且正在尝试完成预定的操作。我想为我的代码编写一些单元测试。对涉及call_later()
动作的代码进行单元测试的“好”方法是什么?我想避免实际等待几秒钟,所以我需要以某种方式模拟时间。
最小的例子:
这个例子有多个问题:
由于
run_forever()
,它不会在do_more_stuff()
被调用后终止。我想一直event_loop
运行,直到没有更多的回调计划。这可能吗?即使我将来破解并使用
event_loop.run_until_complete(fut)
,这个测试仍然需要 2 秒才能完成。我只想运行do_stuff()
和检查预定的回调;或提前时间来加快回调的触发。这些都可能吗?
python-3.x - 'pytest.mark.asyncio' 用于什么用途?
我不明白装饰器可以用于哪些目的@pytest.mark.asyncio
。
我尝试在安装了插件的情况下运行以下代码片段,pytest
但pytest-asyncio
它失败了,所以我得出结论 pytest 在没有装饰器的情况下收集测试协程。为什么会这样存在?
python - Django-Channels 2 Communicator 接收输出()不起作用
我有一个基本的消费者,它从 websocket 接收消息,然后将这些消息广播到消息中指定的通道。
消费者.py
然后我想用 pytest 和 pytest-asyncio 像这样测试它
我的理解是,communicator.receive_output()
将检索消费者发送到通道层的事件。但是我收到以下错误:
在我的测试中我需要做更多的设置/配置吗?还是我用receive_output()
错了?
我正在InMemoryChannelLayer
用于测试和所有最新发布的版本。
python - pytest-asyncio 猴子补丁 requests.post 不起作用
我正在尝试对 test_app 中的 requests.post 做猴子补丁,我正在使用来自 quart(rest-api) 的 test_client ,它是 async 。我从响应中得到的对象是好的,但是测试崩溃了
结果是:
即使来自模拟的值是好的值,它也会失败,这意味着函数将好的值返回给断言
python - 如何使用 pytest 中的 setUp 作为异步方法?
我有以下代码:
测试通过,因为它根本没有进入测试。它只说:
RuntimeWarning:从未等待协程“TestDummy.setUp”
如何使设置功能异步?
观察:如果我从 TestCase 中删除继承,测试会运行,但之前不会进入 setUp 函数,这是必需的。
python - pytest 在启动时标记异步补丁默认事件循环
我有my_module.py
我想测试的。
在模块顶级代码中,我有:
测试1.py:
问题是测试冻结,因为设置的 event_looppytest-asyncio
和mymodule.py
event loop 不一样。
这可以通过移动import mymodule
到测试函数内部来解决,但我不喜欢这样做。
pytest 有没有办法在导入和执行测试代码之前修补默认事件循环?
python - aiohttp_client - RuntimeError:超时上下文管理器应该在任务中使用
我在做什么
我正在通过构建一个 REST api 来学习 aiohttp,我正在使用 Pytest(及其 async 和 aiohttp 插件)对其进行测试。
对于我的第一个测试(我从一开始就使用 TDD),我有以下代码:
aiohttp_client
是来自的客户端夹具pytest-aiohttp
init_test_app
是一个基本上反映了我将要构建的应用程序的夹具create_test_user_table
是我在测试数据库中为用户创建表的装置
它出了什么问题
我的第一个测试是在上面代码块的最后一行抛出以下运行时错误:
从错误消息中,我了解到客户端正在尝试使用异步超时上下文管理器,但这失败了,因为我没有在任务中调用它。
我不知道我的推论是否正确。
而且,我对 asyncio 不太满意,不知道如何解决这个问题。
如果有人告诉我出路,我将不胜感激。
更多信息
这是我的测试文件的源代码:
这是运行时错误的完整跟踪(以及弃用警告 - 我也会很感激获得帮助:))