Python 在unittest中使用assertTrue(=)与assertEqual

Python 在unittest中使用assertTrue(=)与assertEqual,python,unit-testing,python-unittest,Python,Unit Testing,Python Unittest,在Pythonunittest模块中,在以下情况下使用assertTrue()与使用assertEqual()相比,有哪些优点或缺点 self.assertTrue(a == b) self.assertEqual(a, b) 始终使用assertEqual(),因为它可以自定义故障输出 如果两个参数的类型匹配并注册了特定于类型的帮助器方法,则该方法将委托给各种帮助器方法,以向您展示断言失败时两个字符串或两个列表的区别 assertTrue()只能告诉您断言失败的情况,而不能说明原因 从: 此

在Python
unittest
模块中,在以下情况下使用
assertTrue()
与使用
assertEqual()
相比,有哪些优点或缺点

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

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

如果两个参数的类型匹配并注册了特定于类型的帮助器方法,则该方法将委托给各种帮助器方法,以向您展示断言失败时两个字符串或两个列表的区别

assertTrue()
只能告诉您断言失败的情况,而不能说明原因

从:

此外,如果第一个和第二个是完全相同的类型,并且是
list
tuple
dict
set
frozenset
str
或子类使用
addTypeEqualityFunc()注册的任何类型之一
将调用特定于类型的相等函数,以生成更有用的默认错误消息(另请参见)


只有在没有更具体的断言可用时才使用
assertTrue()

如果要检查非真值,请选择
assertEqual
以获取有意义的错误消息。在我看来,与要检查的值相比,在定义预期部分时,它更具可读性


如果要检查是否存在真正的布尔结果,如
assertTrue(user.hasAdminRole())

,请在
assertEqual
上选择
assertTrue
。是的,
assertTrue()
的要点是对表达式的真值进行断言。该问题特别适用于平等性测试。