使用模拟对象来测试网络。
用一个类包装你的网络 API,例如 NetworkManager。它的方法 makeRequest() 将发出真正的 HTTP 请求。
class NetworkManager:
def makeRequest(self):
# Do an HTTP request to the server, return response
单元测试必须使用 NetworkManager 的模拟类,它会覆盖 makeRequest() 方法并返回所需的测试数据而不接触网络:
class MockNetworkManager(NetworkManager):
def makeRequest(self):
return testingResponse
您的 SomeClass 类必须通过网络管理器类发出 HTTP 请求。在生产环境中,它会使用 NetworkManager 的一个实例并做真实的网络请求。在测试环境中,SomeClass 将使用 MockNetworkManager 的一个实例。
class SomeClass:
def __init__(self, network):
network = network
def doHttpGet(self):
response = self.network.makeRequest()
在生产代码中:
some = SomeClass(NetworkManager())
some.doHttpGet()
在单元测试中:
some = SomeClass(MockNetworkManager())
some.doHttpGet()