我有一个外部 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)
如您所见,这是一个非常简单的案例,使用与视图端点接收到的相同数据对外部 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”进行了实际调用,而不是对其进行模拟。