2011-01-08 52 views
11

如果我有一個的unittest.TestCase生成斷言,如下圖所示:Python:unittest可以顯示預期值和實際值嗎?

self.assertTrue(person.age == 42, "age incorrect") 

當它失敗時,它給人的「年齡不正確」的消息。我還想看到的是預期值和實際值。要做到這一點,最好的方法是什麼? unittest可以做些什麼嗎?

編輯 我想看到的東西,如:

「年齡不正確的:預期值42實際值39」

+0

`self.assert`是一個語法錯誤。你的意思是`self.assert_`。 – delnan 2011-01-08 15:59:21

+0

謝謝。是的,我打算寫assertTrue ...更新。 – 2011-01-08 16:13:58

回答

8

您應該使用一個解決此問題的,像這樣:

self.assertEqual(person.age, 42, 'age incorrect: expected value {0} actual value {1}'.format(42, person.age)) 

,但我認爲不提供「味精」參數是最好的選擇,因爲它產生的文本:

first != equal 

運行測試的大多數(*)工具還直接顯示哪條線路發生故障,因此您應該能夠了解哪些測試失敗以及爲什麼不使用額外的消息。

(*)讀取「全部」。

+0

謝謝。我沒有意識到,不添加信息給了實際和預期。 – 2011-01-08 16:29:28

5

見:assertEqual

self.assertEqual(person.age, 42, 'age incorrect') 

或默認的消息(回答評論):

self.assertEqual(person.age, 42) 
+2

這不適合我。它仍然打印出「年齡不正確」,但不是實際值,即person.age的值。 – 2011-01-08 16:05:42

相關問題