嘲弄内部对象调用

时间:2014-08-19 12:33:41

标签: python mocking python-3.4

这是我正在测试的代码 -

client = Client('http://www.w3schools.com/webservices/tempconvert.asmx')
client.service.CelsiusToFahrenheit('1234')

这是我的测试 -

@patch.object(Client.service, 'CelsiusToFahrenheit')
def test_method_call(self, mock):
    converted = convert('1234')
    mock.assert_called_once_with('1234')

我尝试使用patch.object CelsiusToFahrenheit()方法调用来模拟,但我不断获得AttributeError: type object 'Client' has no attribute 'service'的异常。我已经尝试了很多变化,一切都失败了,也有类似的例外。

我的目标是确保使用适当的参数1234调用CelsiusToFahrenheit()。我怎样才能实现这一目标?

或者,有没有其他方法可以实现这一目标?使用Mock会更合适吗?

1 个答案:

答案 0 :(得分:0)

你正在修补错误的东西,看起来你不需要patch.object而只需要通常的补丁。

@patch('path.where.Client.imported.Client.service.CelsiusToFahrenheit')
def test_method_call(self, mock):
    converted = convert('1234')
    mock.assert_called_once_with('1234')

此外,请确保导入CelsiusToFahrenheit方法的路径(通过此处convert)是您要修补的路径,而不是CelsiusToFahrenheit方法所在的路径< em>已定义(请参阅where to patch)。