如果我有一個的unittest.TestCase生成斷言,如下圖所示:Python:unittest可以顯示預期值和實際值嗎?
self.assertTrue(person.age == 42, "age incorrect")
當它失敗時,它給人的「年齡不正確」的消息。我還想看到的是預期值和實際值。要做到這一點,最好的方法是什麼? unittest可以做些什麼嗎?
編輯 我想看到的東西,如:
「年齡不正確的:預期值42實際值39」
如果我有一個的unittest.TestCase生成斷言,如下圖所示:Python:unittest可以顯示預期值和實際值嗎?
self.assertTrue(person.age == 42, "age incorrect")
當它失敗時,它給人的「年齡不正確」的消息。我還想看到的是預期值和實際值。要做到這一點,最好的方法是什麼? unittest可以做些什麼嗎?
編輯 我想看到的東西,如:
「年齡不正確的:預期值42實際值39」
您應該使用一個解決此問題的,像這樣:
self.assertEqual(person.age, 42, 'age incorrect: expected value {0} actual value {1}'.format(42, person.age))
,但我認爲不提供「味精」參數是最好的選擇,因爲它產生的文本:
first != equal
運行測試的大多數(*)工具還直接顯示哪條線路發生故障,因此您應該能夠了解哪些測試失敗以及爲什麼不使用額外的消息。
(*)讀取「全部」。
謝謝。我沒有意識到,不添加信息給了實際和預期。 – 2011-01-08 16:29:28
self.assertEqual(person.age, 42, 'age incorrect')
或默認的消息(回答評論):
self.assertEqual(person.age, 42)
這不適合我。它仍然打印出「年齡不正確」,但不是實際值,即person.age的值。 – 2011-01-08 16:05:42
可以將longMessage
屬性設置爲True
expected_age = 42
actual_age = person.age # 39
self.longMessage = True
self.assertEqual(expected_age, actual_age, 'age incorrect')
你會得到這樣的:
AssertionError: 42 != 39 : age incorrect
參考:https://docs.python.org/2/library/unittest.html#unittest.TestCase.longMessage
`self.assert`是一個語法錯誤。你的意思是`self.assert_`。 – delnan 2011-01-08 15:59:21
謝謝。是的,我打算寫assertTrue ...更新。 – 2011-01-08 16:13:58