使用 Python 的 Mock 包模拟请求
要有效地模拟 Python 的 requests 模块,请按照以下步骤操作:
第 1 步:模拟请求模块
要在测试类的上下文中模拟请求模块,请使用以下语法:
<code class="python">import mock @mock.patch('requests.get') def test_function(self, mockedRequests):</code>
在测试函数内:
示例:
<code class="python">mockedRequests.get('aurl').return_value = 'a response' mockedRequests.get('burl').return_value = 'b response' mockedRequests.get('curl').return_value = 'c response'</code>
第 2 步:调用视图函数
在您的测试用例中,调用 myview 函数来执行 HTTP 请求。
第 3 步:验证响应
断言响应对象包含预期值('a 响应'、'b 响应'、'c 响应')。
示例:
<code class="python">res1 = myview(request) self.assertIn('a response', res1) res2 = myview(request) self.assertIn('b response', res2) res3 = myview(request) self.assertIn('c response', res3)</code>
示例代码:
<code class="python">import unittest import mock from views import myview # Mock the requests module @mock.patch('requests.get') def test_myview(self, mockedRequests): # Define return values for URL calls mockedRequests.get('aurl').return_value = 'a response' mockedRequests.get('burl').return_value = 'b response' mockedRequests.get('curl').return_value = 'c response' # Call the view function res1 = myview(request) res2 = myview(request) res3 = myview(request) # Verify response self.assertIn('a response', res1) self.assertIn('b response', res2) self.assertIn('c response', res3) if __name__ == '__main__': unittest.main()</code>
以上是如何有效模拟Python的Requests模块进行测试?的详细内容。更多信息请关注PHP中文网其他相关文章!