unittest addTypeEqualFunc() 的注册和范围



Python的unittest框架定义了addTypeEqualityFunc方法,该方法"注册由assertEqual((调用的特定于类型的方法,以检查两个完全相同类型的对象(不是子类(是否相等。

这种注册的机制的范围是什么?文档也没有讨论,"python注册"对搜索是抗拒的。

大多数情况下,我很好奇这种"注册"是否是本地范围内的某种分配,或者 Python 是否有更广泛的注册概念,我无法在文档中挖掘出来。

它仅适用于当前测试。在这种情况下,Python unittest 没有一些更广泛的"注册"概念。 以下两项测试都将通过:

# run these tests with "python -m unittest" in same directory as this file.
from unittest import TestCase
class Potato:
pass
def potato_compare(potato1, potato2, msg=None):
return True
class Test1(TestCase):
def test_one(self):
spud = Potato()
yam = Potato()
self.addTypeEqualityFunc(Potato, potato_compare)
self.assertEqual(spud, yam)
def test_two(self):
spud = Potato()
yam = Potato()
self.assertNotEqual(spud, yam)

如果您希望它应用于每个测试,您可以将其添加到setUp

class Test2(TestCase):
def setUp(self):
self.addTypeEqualityFunc(Potato, potato_compare)
def test_one(self):
spud = Potato()
yam = Potato()
self.assertEqual(spud, yam)
def test_two(self):
spud = Potato()
yam = Potato()
self.assertEqual(spud, yam)

警告:此功能不会递归到容器中。例如,[spud][yam]不会被识别为相等的列表。

最新更新