问题标签 [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.

0 投票
0 回答
185 浏览

python - 如何测试异步流(协程、任务)?

我应该怎么做来测试login协程?

更具体地说,我想测试登录消息是否始终以正确的格式发送(1),也许还有在发送消息之前应该先建立连接的事实(2)。此外,如果这很重要,我无法运行服务器的本地副本。

这可能吗?我什至应该测试这个吗?

我正在使用pytest,我尝试使用一个名为的库pytest-asyncio,但我只是不明白如何测试这样的东西。

0 投票
1 回答
3318 浏览

pytest - pytest-asyncio 有一个封闭的事件循环,但仅在运行所有测试时

我有一个测试来验证异步响应是否引发了异常,我正在使用 pytest-asyncio 版本 0.10.0 运行该响应。

代码基本上是:

现在真正奇怪的是,如果我单独运行它,或者单独运行这个类,这个测试工作得很好。但是,当我运行所有测试(项目根目录下的 pytest)时,每次都会失败并出现运行时错误,表示循环已关闭。

0 投票
1 回答
857 浏览

django - 使用 WebSocketCommunicator 在 Django Channels v2 测试中进行身份验证

在为我的聊天消费者编写测试的过程中,我遇到了无法使用 WebSocketCommunicator 在测试中进行身份验证的问题。我有自定义的 JwtTokenAuthMiddleware,它通过在请求查询中使用令牌来实现套接字中的身份验证,因为据我所知,使用授权标头进行体面的身份验证是不可能的。你们能给我建议或提供我在网上找不到的示例代码吗?顺便说一句,我的聊天没有问题。测试也应该很好,我从官方文档 Django Channels 2.x 测试中获取了指南。

--JwtTokenAuthMiddlewate--

--示例测试--

--错误追溯--

0 投票
0 回答
636 浏览

python - 为什么使用 pytest-asyncio 和 @parametrize 会导致测试运行时间比不使用时长

我有一个测试。它向 url 列表发送一个 get 请求,并检查响应是否为 500。

这是我的“获取”功能

它有效,但速度很慢。大约需要 3 分钟才能完成。

但是当我在没有@parametrize 的情况下使用这个测试并且我的“get”函数使用 url_list 时 - 它运行大约 1 分钟。我在第二种情况下的代码:

我想在这里两全其美。有没有办法让测试快速运行,但也可以作为单独的单元运行?

0 投票
0 回答
357 浏览

pytest - Python asynctest 模拟补丁装饰器溢出到后续测试中

我正在尝试测试异步功能。为此,我正在使用pytest-asyncioand asynctest。我需要检查在我正在测试的函数中使用的函数被调用了多少次。为此,我正在使用aynsctest.mock.patch(). 我的测试文件如下所示:

如果我单独运行测试用例,它们就会通过。但是,当我运行整个模块时,要运行的第二个测试用例会失败 - 无论它们运行的​​顺序如何。我怀疑这是因为第一个测试用例的模拟仍然影响要运行的第二个测试用例。

我在这里做错了什么?

0 投票
1 回答
907 浏览

python-3.x - 如何为 asyncio 流服务器编写 pytest 夹具?

我一直在尝试学习 asyncio,但找不到任何创建可用于测试服务器代码的 pytest 夹具的示例。一旦服务器启动,我想它会阻止其他所有内容,因此测试永远不会运行。pytest-asyncio 是否有办法在单独的线程中运行夹具?还是我需要自己编写线程代码?或者,还有更好的方法?下面是我一直在搞乱的一些代码。它是从官方TCP 回显服务器直接复制和粘贴,使用带有 pytest 夹具的流文档并在最后进行测试:

0 投票
1 回答
720 浏览

python - 将 python asyncio 与 pyee Event Emitter 结合使用

我正在尝试使用 pyee 库中的AsyncIOEventEmitter没有成功。由于某种原因,发出的事件“Hi”永远不会到达async_handler完成 asyncio 未来。我也没有在网上找到合适的例子。此外,我尝试提供当前事件并为 使用新的事件循环AsyncIOEventEmitter,但两者都产生相同的结果。

有人可以帮我吗?下面的示例单元测试:

谢谢!

0 投票
1 回答
901 浏览

python-3.x - 带有单例的 pytest-asyncio 导致冲突的事件循环

我正在使用 dbus 进行 IPC。为了在我的程序的整个生命周期中只有一辆公共汽车,我在这里使用了单例。为了演示,我连接到 NetworkManager 但可以交换。此外,我正在使用asyncio整个项目。这是一个模块的简约工作示例,将突出以下描述的问题:

我正在使用pytest插件pytest-asyncio进行测试,除了这种情况外,它就像魅力一样。这是一个简约的工作测试模块:

当我执行该测试时,我收到以下异常,表明事件循环已更改:

我猜 pytest 启动了一个事件循环,并且在模块导入期间启动了另一个事件循环,但我不确定。我尝试使用pytest或使用模块事件循环来强制执行,asyncio.set_event_loop()但没有成功。结果保持不变。

我的假设正确吗?我怎样才能强制使用全局事件循环?或者,我应该如何定义单例以使其工作pytest

可能值得注意的是,这个单例结构在程序上下文中工作得非常好。这只是我无法弄清楚如何使其工作的测试。

0 投票
1 回答
1436 浏览

python - 带有异步引擎的外部事务中的会话

我正在尝试使用异步API 和pytest.

首先,我尝试将zzzeekunittest的示例转换为,效果很好pytest

然后我尝试使用0.14.0 版切换到asyncioAPIpytest-asyncio

但是,这会失败"FAILED test_thing_two_pytest - assert 8 == 3",因为在第一次测试之后的事务回滚teardown不会恢复到setup阶段中创建的 SAVEPOINT。

由于我对 sqlalchemy 内部知识的了解不是很好,因此我正在寻求帮助来设置它,因为这对我的测试套件性能至关重要。

难道缺少async事件侦听器和定义restart_savepointAsyncSession.sync_session不够的,只需要等待 1.4 API 的稳定版本吗?

谢谢!

0 投票
1 回答
730 浏览

python - 使用 Pytest 测试 Asyncio:如何通过模拟事件循环来测试 try-except 块?

在我正在使用的源代码(此处的源链接和此处WIP PR)中,我试图通过测试类方法try-except中的块来提高测试覆盖率。__init__

从源代码中剥离额外的代码,相关代码如下所示:

在一个单独的测试文件中,我想模拟RuntimeError测试try except块:

两个测试都不会通过,因为两者都不会 raise RuntimeError

asyncio.new_event_loop此外,我试图模拟monkeypatch

该测试也失败了,因为从未调用过猴子补丁:> assert mock_new_loop.call_count == 1 E assert 0 == 1.

我想知道我在这里做错了什么,我怎么能成功地测试__init__这个类的方法?

非常感谢您的时间!