我有一个外部API POST调用,它是从我的views.py
内部进行的,如下所示:
class MyView(APIView):
def post(self, request):
my_headers = {
"Content-Type": "application/json"
}
response = requests.post("https://some-external-api.com", data=json.dumps(request.data), headers=my_headers)
return Response(status.response.status_code)
如您所见,这是一个非常简单的情况,即使用接收到views端点的相同数据对外部API进行POST调用
现在,我正在尝试为此创建一个单元测试,同时模拟来自https://some-external-api.com“因此,我显然不必在每次单元测试运行时都实际调用它。但是我遇到了困难,因为我无法让模拟方面工作,每次请求都被发送到实际的外部端点
我知道网上有很多例子,但我试过的都不管用。我没有看到模拟响应应该来自视图文件本身的例子。到目前为止,我有:
@patch('requests.post')
def test_external_api_call(self, mock_post)
mock_post.return_value.ok = True
response = self.client.post(reverse('my-view'), {
//my random dummy json object goes here
}, format='json')
self.assertEqual(response.status_code, 200)
如前所述,使用上述代码,实际调用了“https://some-external-api.com“而不是被嘲笑
无需重新发明轮子,只需使用请求库可用的mocker,如requests_mock
相关问题 更多 >
编程相关推荐