您的模拟正在引发异常,但是该
error.resp.status值丢失了。而不是使用
return_value,只是告诉
Mock它
status是一个属性:
barMock.side_effect = HttpError(mock.Mock(status=404), 'not found')
将其他关键字参数
Mock()设置为结果对象的属性。
我将您的
foo和
bar定义放在
my_tests模块中,并添加到
HttpError类中,这样我也可以使用它,然后您的测试就可以成功进行:
>>> from my_tests import foo, HttpError>>> import mock>>> with mock.patch('my_tests.bar') as barMock:... barMock.side_effect = HttpError(mock.Mock(status=404), 'not found')... result = my_test.foo()... 404 - >>> result is NoneTrue您甚至可以看到
print '404 - %s' %error.message生产线运行,但我想您想在
error.content那里使用它。
HttpError()无论如何,这是第二个参数设置的属性。



