如果我这样称呼它,我会看到一个很好的差异:
self.assertEqual(a, b)
如果我这样称呼它,我只会看到msg:
self.assertEqual(a, b, msg)
是否有一种简单的方法来显示差异和信息?
自己实施assertEqual()
会有效,但我会问自己这是不是最好的方法。
Plattform:Python2.7和pytest 2.6.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