我在python中运行以下单元测试,结果应该是正确的,但是单元测试出错了。
错误是什么?
这是我必须测试的课程
class Strategy:
_a = 0
_b = 0
_result = 0
def __init__(self, a, b):
try:
int(a)
int(b)
except ValueError:
raise ValueError()
self._a = a
self._b = b
这是我的单元测试
def test_invalideValue(self):
with self.assertRaises(ValueError) as cm:
StrategyAddition('A', 3)
self.assertEqual(cm.exception, ValueError())
这就是put
Failure
Traceback (most recent call last):
File "C:\Users\Michi\workspace_python\DesignPatternPython\Strategy\TestStrategy.py", line 24, in test_invalideValue
self.assertEqual(cm.exception, ValueError())
AssertionError: ValueError() != ValueError()
答案 0 :(得分:5)
Exception
个对象没有实现自定义相等性测试,没有__eq__
方法只有身份测试才会成立:
>>> a = ValueError()
>>> a == a
True
>>> a == ValueError()
False
您根本不需要测试的相等性,因为self.assertRaises
只能抓住ValueError
实例 。< / p>
如果您确实有其他理由来测试异常为ValueError
,请改为使用isinstance()
:
self.assertTrue(isinstance(cm.exception, ValueError))
否则,cm.exception
仅用于测试异常的其他方面,例如特定属性。