Python unittest以失败告终

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)

Mar*_*ers 5

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仅在那里测试异常的其他方面,如特定属性.