2016-04-25 31 views
3

如果我這樣稱呼它,我看到一個漂亮的DIFF:的Python:self.assertEqual(A,B,味精) - >我要DIFF和味精

self.assertEqual(a, b) 

如果我這樣稱呼它,我只看到味精:

self.assertEqual(a, b, msg) 

有沒有簡單的方法來顯示差異和味精?

實施assertEqual()我自己會工作,但我問自己這是否是最好的方法。

Plattform:Python2.7和pytest 2.6.2。

+0

pytest做到這一點,我想.. –

回答

3

如果您設置longMessage attributeTrue,您將看到兩個消息。

例子:

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 
+0

哇,這很快。謝謝你,它像一個魅力。我很高興:-) – guettli

+0

對於Python3,longMessage的默認值已經更改爲更好的默認值True:https://docs.python.org/3/library/unittest.html#unittest.TestCase.longMessage – guettli

2

由於您使用pytest,你也可以使用pytest的純斷言,而不是單元測試兼容性:

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 
+0

是的,我可以做這個。我必須與我的團隊討論這個問題。到目前爲止,我們使用self.assertFOO()方法。 – guettli