Python:可以通过unittest显示预期值和实际值吗?

时间:2011-01-08 15:38:40

标签: python unit-testing

如果我在unittest.TestCase中有一个断言,如下所示:

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

如果失败,则会显示“年龄不正确”消息。我还希望看到的是预期值和实际值。这样做的最佳方法是什么?是单位测试可以做的吗?

修改 我希望看到类似的内容:

“年龄不正确:预期值42实际值39”

3 个答案:

答案 0 :(得分:21)

您可以将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

答案 1 :(得分:9)

您应该使用解决此问题的方法,如下所示:

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

但我认为不提供“msg”参数是最佳选择,因为它会生成文本:

first != equal

用于运行测试的大多数(*)工具也直接显示哪一行失败,因此您应该能够了解哪个测试失败以及为什么不使用额外的消息。

(*)读“全部”。

答案 2 :(得分:5)

请参阅:assertEqual

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

或使用默认消息(回答评论):

self.assertEqual(person.age, 42)