在Python unittest
模块中,在以下情况下使用assertTrue()
与assertEqual()
有任何优点或缺点吗?
self.assertTrue(a == b)
self.assertEqual(a, b)
答案 0 :(得分:11)
始终使用assertEqual()
,因为自定义故障输出。
如果两个参数的类型匹配并且注册了特定于类型的辅助方法,则该方法委托各种辅助方法向您展示断言失败时两个字符串或两个列表的不同之处。
assertTrue()
只能告诉你断言失败,而不是告诉你原因。
来自assertEqual()
documentation:
此外,如果第一个和第二个是完全相同的类型,并且是
list
,tuple
,dict
之一,set
,frozenset
或str
或子类向addTypeEqualityFunc()
注册的任何类型将调用特定于类型的相等函数,以生成更有用的默认错误消息(另见list of type-specific methods)。
如果没有更具体的断言,则仅使用assertTrue()
。
答案 1 :(得分:0)
有一种情况我更喜欢assertTrue而不是assertEquals。如果要检查布尔结果,例如assertTrue(user.hasAdminRole())
但是如果你想检查另一种类型的值,你应该更喜欢assertEquals来获取有意义的错误消息。在我看来,它也更具可读性,你定义了预期的a 部分以及要检查的值的部分。