python - pytest - 模拟网络故障
问题描述
我正在尝试使用 pytest 对我在 python3.7 和 asyncio 中开发的应用程序进行集成测试。该应用程序应该连接到远程服务器,如果网络出现故障,我的应用程序应该检测到这一点并尝试以指定的时间间隔重新连接。通常,在我的集成测试中,我的远程服务器已经在运行并正在侦听 TCP 端口。我的应用程序应该连接到该端口,我将检查连接是否成功。然后我需要模拟网络中断,其中应用程序失去与服务器的连接并在网络无法运行时测试应用程序的行为,然后我需要使网络重新联机并确认应用程序将正确重新连接并执行它任务。出于我的集成测试的目的,所有这些东西都在我的本地主机上运行。
pytest 是否已经为这个用例提供了一些东西,还是我应该自己构建某种代理服务器?我该怎么做呢?
解决方案
Pytest 没有任何功能来模拟网络故障,因为它只是测试运行器。
您需要使用可以模拟连接失败或响应时间长的外部模拟服务器。为此,我使用并推荐模拟服务器 Mountebank:http ://www.mbtest.org/
使用 Mountebank,您将能够模拟来自远程服务器的任何响应。您可以通过 API 直接管理 Mountebank 行为或使用客户端库:http ://www.mbtest.org/docs/clientLibraries
推荐阅读
- vim - 如何转到 vim/nerdtree 中的文件?
- excel - 如果结果为负,如何跳过值?在excel中
- python - 将更多列转换为不同类型
- java - 如何从 Java 中的 LinkedList 中删除元素?如何将第一个元素设置为 Java 中链表的头部?
- python - 多次调用 np.random.multinomial 的行为是什么?
- php - 使用 HTML 按钮单击运行 PHP
- c# - 异步修改相关对象列表会产生意外结果
- python - linux中命令“ls”后的点有什么用?〜ls
- excel - Excel VBA(子或函数未定义错误)
- python - Python嵌套条件?双重条件后跟另一个条件