mic*_*mut 0 python unit-testing python-unittest
我在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
Run Code Online (Sandbox Code Playgroud)
这是我的单位测试
def test_invalideValue(self):
with self.assertRaises(ValueError) as cm:
StrategyAddition('A', 3)
self.assertEqual(cm.exception, ValueError())
Run Code Online (Sandbox Code Playgroud)
而这就是看跌期权
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()
Run Code Online (Sandbox Code Playgroud)
Exception对象不实现自定义相等性测试,没有__eq__方法,只有身份测试才会成立:
>>> a = ValueError()
>>> a == a
True
>>> a == ValueError()
False
Run Code Online (Sandbox Code Playgroud)
你并不需要测试平等可言,因为self.assertRaises只会赶上ValueError实例反正.
如果你确实有不同的理由来测试异常是a ValueError,请使用isinstance():
self.assertTrue(isinstance(cm.exception, ValueError))
Run Code Online (Sandbox Code Playgroud)
否则,cm.exception仅在那里测试异常的其他方面,如特定属性.