如何模拟请求和响应
简介
Python中的单元测试通常涉及模拟外部依赖项来模拟现实世界的场景。模拟使我们能够控制这些依赖项的行为,为我们的测试提供更大的稳定性和可预测性。本文演示了如何模拟 Python 的 requests 模块及其响应,以促进有效的单元测试。
第 1 步:模拟请求模块
要模拟 requests 模块,请利用来自标准库的mock模块:
import mock
在测试的设置阶段为requests模块创建一个mock对象method:
mockedRequests = mock.Mock()
配置模拟对象在调用 get() 方法时针对不同的 URL 返回特定响应:
mockedRequests.get.side_effect = [
# First URL: Return 'a response'
mock.Mock(status_code=200, text='a response'),
# Second URL: Return 'b response'
mock.Mock(status_code=200, text='b response'),
# Third URL: Return 'c response'
mock.Mock(status_code=200, text='c response')
]
第2步:调用视图
模拟了请求模块后,调用视图中发出请求的函数:
res1 = mockedRequests.get('aurl')
res2 = mockedRequests.get('burl')
res3 = mockedRequests.get('curl')
第3步:验证响应
由于请求模块被模拟,可以轻松检查响应的预期值:
self.assertEqual(res1.text, 'a response')
self.assertEqual(res2.text, 'b response')
self.assertEqual(res3.text, 'c response')
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3