在unittest中使用assertTrue(==)vs assertEqual

时间:2018-01-11 21:58:19

标签: python unit-testing python-unittest

在Python unittest模块中,在以下情况下使用assertTrue()assertEqual()有任何优点或缺点吗?

self.assertTrue(a == b)
self.assertEqual(a, b)

2 个答案:

答案 0 :(得分:11)

始终使用assertEqual(),因为自定义故障输出

如果两个参数的类型匹配并且注册了特定于类型的辅助方法,则该方法委托各种辅助方法向您展示断言失败时两个字符串或两个列表的不同之处。

assertTrue()只能告诉你断言失败,而不是告诉你原因。

来自assertEqual() documentation

  

此外,如果第一个第二个是完全相同的类型,并且是listtupledict之一, setfrozensetstr或子类向addTypeEqualityFunc()注册的任何类型将调用特定于类型的相等函数,以生成更有用的默认错误消息(另见list of type-specific methods)。

如果没有更具体的断言,则仅使用assertTrue()

答案 1 :(得分:0)

有一种情况我更喜欢assertTrue而不是assertEquals。如果要检查布尔结果,例如assertTrue(user.hasAdminRole())

但是如果你想检查另一种类型的值,你应该更喜欢assertEquals来获取有意义的错误消息。在我看来,它也更具可读性,你定义了预期的a 部分以及要检查的值的部分。