我正在尝试针对在python3.7和asyncio中开发的应用程序使用pytest进行集成测试。该应用程序应该连接到远程服务器,并且如果网络出现故障,我的应用程序应检测到该情况并尝试以指定的时间间隔重新连接。通常,在集成测试中,我的远程服务器已经在运行并且正在侦听TCP端口。我的应用程序应该连接到该端口,然后我将检查连接是否成功。然后,我需要模拟网络中断,其中应用程序会断开与服务器的连接,并在网络无法运行时测试应用程序的行为,然后需要使网络恢复在线状态,并确认应用程序可以正确地重新连接并执行任务。为了进行集成测试,所有这些东西都在我的本地主机上运行。
在这个用例中pytest已经有东西了吗,还是我应该自己构建某种代理服务器?我将如何去做?
答案 0 :(得分:0)
Pytest没有任何功能可以模拟网络故障,因为它只是测试运行器。
您需要使用可以模拟连接失败或响应时间较长的外部模拟服务器。为此,我使用并推荐模拟服务器Mountebank:http://www.mbtest.org/
使用Mountebank,您将可以模拟来自远程服务器的任何响应。您可以直接通过API或使用客户端库来管理Mountebank行为:http://www.mbtest.org/docs/clientLibraries
答案 1 :(得分:0)
我知道这是一个老问题,解决方案与pytest无关,但由于标题的表述方式,可能对出于类似原因来到这里的人有用.有一个模拟互联网故障的库。原来的仓库有一个主库的bug,但是在我做的fork中修复了。