首页 > 解决方案 > pytest - 模拟网络故障

问题描述

我正在尝试使用 pytest 对我在 python3.7 和 asyncio 中开发的应用程序进行集成测试。该应用程序应该连接到远程服务器,如果网络出现故障,我的应用程序应该检测到这一点并尝试以指定的时间间隔重新连接。通常,在我的集成测试中,我的远程服务器已经在运行并正在侦听 TCP 端口。我的应用程序应该连接到该端口,我将检查连接是否成功。然后我需要模拟网络中断,其中应用程序失去与服务器的连接并在网络无法运行时测试应用程序的行为,然后我需要使网络重新联机并确认应用程序将正确重新连接并执行它任务。出于我的集成测试的目的,所有这些东西都在我的本地主机上运行。

pytest 是否已经为这个用例提供了一些东西,还是我应该自己构建某种代理服务器?我该怎么做呢?

标签: pythontcppytest

解决方案


Pytest 没有任何功能来模拟网络故障,因为它只是测试运行器。

您需要使用可以模拟连接失败或响应时间长的外部模拟服务器。为此,我使用并推荐模拟服务器 Mountebank:http ://www.mbtest.org/

使用 Mountebank,您将能够模拟来自远程服务器的任何响应。您可以通过 API 直接管理 Mountebank 行为或使用客户端库:http ://www.mbtest.org/docs/clientLibraries


推荐阅读