Python 使用Pytest模拟错误的JSON响应,故意引发simplejson.errors.JSONDecodeError
我想用Pytest测试异常。我发送一个HTTP请求并得到一个响应。我希望响应损坏,以便response.json()转到except块。下面是一些例子 发送请求,接收响应:Python 使用Pytest模拟错误的JSON响应,故意引发simplejson.errors.JSONDecodeError,python,unit-testing,exception,mocking,pytest,Python,Unit Testing,Exception,Mocking,Pytest,我想用Pytest测试异常。我发送一个HTTP请求并得到一个响应。我希望响应损坏,以便response.json()转到except块。下面是一些例子 发送请求,接收响应: def send_message_json(): # ... 尝试: response=cls.send_消息(方法、url、**kwargs) 如果回答: return response.json()#这是应该失败的 除了simplejson.errors.JSONDecodeError作为错误外: 提高误差——这是要实现
def send_message_json():
# ...
尝试:
response=cls.send_消息(方法、url、**kwargs)
如果回答:
return response.json()#这是应该失败的
除了simplejson.errors.JSONDecodeError作为错误外:
提高误差——这是要实现的
单元测试应该断言应该引发simplejson.errors.JSONDecodeError
@mock.patch.object(服务'send\u message\u json')
def测试发送消息json异常(模拟发送):
svc=服务()
使用pytest.raises(simplejson.errors.JSONDecodeError):#这应该断言引发的异常
svc.send_message_json(“GET”http://my.url/')
我无法激活pytest.mock.object引发的异常。什么会使.json()在模拟中失败?我通过模拟实际请求的响应来解决这个问题
@mock.patch.object(服务“发送消息”)#改为mock发送消息
def测试发送消息json异常(模拟发送):
svc=服务()
模拟_响应=响应()
模拟_响应。状态_代码=200
mocked_response.data='',所以这显然不是JSON
mock_send.return_value=mock_response#在此处应用模拟响应
使用pytest.raises(simplejson.errors.JSONDecodeError):
svc.send_message_json(“GET”http://my.url/“)#调用send_message()并返回错误的模拟请求。响应
@mock.patch.object(服务,'send_message_json',side_effect=jsondecoderror)
@hoefling使用这种方法,我认为无论我对函数做了什么更改,它都会抛出这个错误。例如,如果我对这个方法send_message_json()进行了不应该通过的更改,那么副作用还会抛出一个否则不会抛出的错误吗??