我一直在调查requests_mock库以检查响应。我只是想知道我怎么能真的劫持'实际要求做一个嘲笑的人。
在我的test_model.py
我将创建一个新的SomeModel
。当SomeModel.objects.create()完成后,将触发信号。
信号如下:
@receiver(post_save, sender=SomeModel, dispatch_uid="update_model")
def update_model(sender, instance, created, **kwargs):
instance.update_status()
从update_status
函数开始,它通过另一个函数来设置有效负载和URL,然后它实际在send_model
函数中执行请求,如下所示:
def send_model(url, payload):
....
request.post(url, data=json.dumps(payload), headers=headers) <- request to be mocked
我的问题是,在运行测试时如何实际模拟此请求?
答案 0 :(得分:0)
Django有RequestFactory
:
mock_request = RequestFactory()
mock_request.get('/url/')
mock_request.post('/url/', data={'key':'value'})
编辑:
您可以通过模拟请求修补视图,查看mock库,PropertyMock
类;我记得我有同样的问题,我这样做了:
import mock
with patch("views.MyView.request", create=True, new_callable=mock.PropertyMock, return_value=mock_request):
# Run your view, do your test under the `with` statement where the view is patched with the mock_request
self.assertFalse(True)