模拟外部HTTP请求

2024-09-29 23:25:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个类,它输出到一个外部服务器,很自然地,检索我为其做了一些处理的数据。我真的需要对整个过程进行单元测试,但我不想每次发出请求时都不断地访问外部服务器。我的问题是:什么是合适的协议?我用的是生菜,但我也愿意接受其他想法。在

这是我的班级:

## in my class
class SomeClass:
    def doHttpGet(self):
        ## return request from http://somewhere.com

我应该重写doHttpGet。。。在

^{pr2}$

Tags: 数据inself服务器协议过程mydef
1条回答
网友
1楼 · 发布于 2024-09-29 23:25:29

使用mock objects测试网络。在

用一个类(例如NetworkManager)包装网络API。它的方法makeRequest()将生成真正的HTTP请求。在

class NetworkManager:
    def makeRequest(self):
        # Do an HTTP request to the server, return response

单元测试必须使用NetworkManager的模拟类,该类重写makeRequest()方法并返回所需的测试数据而不接触网络:

^{pr2}$

SomeClass类必须通过networkmanager类发出HTTP请求。在生产环境中,它将使用NetworkManager实例并执行实际的网络请求。在测试环境中,某些类将使用MockNetworkManager的实例。在

^{3}$

生产代码:

some = SomeClass(NetworkManager())
some.doHttpGet()

单元测试中:

some = SomeClass(MockNetworkManager())
some.doHttpGet()

相关问题 更多 >

    热门问题