Python unittest以失败告终

时间:2017-04-02 21:15:25

标签: 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

这是我的单元测试

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()

1 个答案:

答案 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仅用于测试异常的其他方面,例如特定属性。