Python:self.assertEqual(a,b,msg) - >我想要diff和msg

时间:2016-04-25 07:15:26

标签: python python-2.7 unit-testing pytest python-unittest

如果我这样称呼它,我会看到一个很好的差异:

self.assertEqual(a, b)

如果我这样称呼它,我只会看到msg:

self.assertEqual(a, b, msg)

是否有一种简单的方法来显示差异和信息?

自己实施assertEqual()会有效,但我会问自己这是不是最好的方法。

Plattform:Python2.7和pytest 2.6.2。

2 个答案:

答案 0 :(得分:4)

如果您设置longMessage attribute True,则会看到这两条消息。

示例:

class TestFoo(unittest.TestCase):

    longMessage = True  # <--

    def test_foo(self):
        self.assertEqual(1+2, 2, 'custom message')

输出:

F
======================================================================
FAIL: test_foo (__main__.TestFoo)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "t.py", line 6, in test_foo
    self.assertEqual(1+2, 2, 'custom message')
AssertionError: 3 != 2 : custom message

----------------------------------------------------------------------
Ran 1 test in 0.000s

答案 1 :(得分:2)

由于你正在使用pytest,你也可以使用pytest的普通断言而不是unittest兼容性:

def test_foo():
    assert "abcdefg" == "abcde", "My message"

输出:

====================== FAILURES ======================
______________________ test_foo ______________________

    def test_foo():
>       assert "abcdefg" == "abcde", "My message"
E       AssertionError: My message
E       assert 'abcdefg' == 'abcde'
E         - abcdefg
E         ?      --
E         + abcde