【发布时间】:2020-09-23 19:13:00
【问题描述】:
我正在尝试对名为 TargetException 的自定义异常进行单元测试。
这个异常的一个论据本身就是一个异常。
这是我测试的相关部分:
mock_exception.assert_called_once_with(
id,
AttributeError('invalidAttribute',)
)
这是测试失败消息:
File "/usr/local/lib/python2.7/site-packages/mock/mock.py", line 948, in assert_called_once_with
return self.assert_called_with(*args, **kwargs)
File "/usr/local/lib/python2.7/site-packages/mock/mock.py", line 937, in assert_called_with
six.raise_from(AssertionError(_error_message(cause)), cause)
File "/usr/local/lib/python2.7/site-packages/six.py", line 718, in raise_from
raise value
AssertionError: Expected call: TargetException(<testrow.TestRow object at 0x7fa2611e7050>, AttributeError('invalidAttribute',))
Actual call: TargetException(<testrow.TestRow object at 0x7fa2611e7050>, AttributeError('invalidAttribute',))
在“预期调用”和“动作调用”中,存在相同的参数 - 至少在我看来是这样。
我是否需要以不同的方式传递 AttributeError 来解决错误?
【问题讨论】:
-
我认为您应该使用 assertRaises 来测试引发的异常 (docs.python.org/3/library/…) 而不是正常的 called_once 断言
标签: python unit-testing exception attributeerror python-mock