这是我正在测试的代码 -
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
会更合适吗?
答案 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)。