Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python:unittest能否显示预期值和实际值?_Python_Unit Testing - Fatal编程技术网

Python:unittest能否显示预期值和实际值?

Python:unittest能否显示预期值和实际值?,python,unit-testing,Python,Unit Testing,如果我在unittest.TestCase中有一个断言,如下所示: self.assertTrue( person.age == 42, "age incorrect") 当它失败时,它会给出“年龄不正确”的消息。我还想看到的是预期值和实际值。做这件事最好的方法是什么?这是unittest可以做的吗 编辑 我想看看这样的东西: “年龄不正确:预期值42实际值39”请参见: 或使用默认消息(回答评论): 您应该使用解决此问题的方法,如下所示: self.assertEqual(person.ag

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

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))
但我认为不提供“msg”参数是最好的选择,因为它会生成文本:

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


(*)读取“全部”。

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

引用:

self.assert
是一个语法错误。你是说
self.assert.
。谢谢。是的,我想写assertTrue…更新。这对我不起作用。它仍然打印出“年龄不正确”,但不是实际值,即person.age.thank的值。我没有意识到不添加消息会给出实际值和预期值。这违反了原则。@Bakuriu直接显示哪一行失败并不意味着您能够知道预期值和实际值,特别是当测试失败时。显示msg参数和断言值并不难。不需要写两次值。只需将
TestCase
实例的
longMessage
属性设置为
True
@Bakuriu问题是如何同时显示错误消息和断言值。(参见问题的最后一句。)另外,我认为显示错误消息是让用户了解情况的直观方式。它和断言值一样重要。此外,正如我所提到的,有一个非常简单的方法来实现这一点。一个有效的答案并不是一个好的答案,当然@Rockallite可以决定它需要多差才能投否决票。我个人不会投反对票,但这确实让我皱眉。这正是我认为应该存在的。回答得很好!
expected_age = 42
actual_age = person.age # 39
self.longMessage = True
self.assertEqual(expected_age, actual_age, 'age incorrect')
AssertionError: 42 != 39 : age incorrect