2015-03-31 56 views
0

我试图覆盖HTTP_POST到一个视图中请求对象的特定字符串:如何使用mock.patch()获取Django请求对象?

with patch('django.core.handlers.wsgi.WSGIRequest') as request: 
    request.META = {'HTTP_HOST': 'www.abc.com'} 
    resp = self.client.get('/') 

但很明显,它不工作,因为它的抱怨HTTP_POST KeyError异常

回答

1

而不是使用一个模拟对象,你应该使用django.test.client.RequestFactory来生成请求对象。

+0

我没有特别的观点来测试,因为这是一个库,我只是想测试中间件,但看起来像我可能只是直接测试中间件而不经过请求 – 2015-03-31 00:21:31

+0

你仍然需要一个'请求对象。另一个选择是简单地使用'django.http.request.HttpRequest',它比'WSGIRequest'更容易构建。这两种方法都是专门为测试而定制的,并且经常在Django的测试套件中使用。 – knbk 2015-03-31 00:39:02