我正在使用bottle框架。我有以下代码
from bottle import request
def abc():
x = request.get_header('x')
...
...
data = request.json()
...
...
我正在为这个函数编写单元测试,我想模拟bottle.request
的get_header
和json
方法,并从其中返回我的模拟数据。
我已经尝试过了。
from mock import patch
@patch('bottle.request.headers', return_value={'x': 'x'})
@patch('bottle.request.json', return_value=...)
def test_abc(self, _, __):
...
...
但是当尝试读取
request.headers
时会出现错误,因为它是只读的。我还需要模拟request.json
。提前感谢您的帮助 :)。
request = Mock(headers={'x': 'x'}, json={})
但是失败了。:( - Nileshget_header
方法,所以你需要模拟它,而不是headers属性。同样,json
需要是一个函数,而不是直接是一个字典。或者不要使用mocks:实际上启动一个服务器并向其发出请求,或者使用http://docs.pylonsproject.org/projects/webtest/en/latest/。我不明白为什么你需要“伪造”请求。在本地进行请求没有显著的网络开销。 - Alex Hall