У меня есть метод, который возвращает набор объектов, и я пишу модульный тест для этого метода. Есть ли общий, аккуратный и идиоматический способ сравнения их на предмет идентичности (а не равенства)? Или мне нужно самому написать подходящую реализацию?
Пример (несколько придуманный, чтобы упростить его):
class Foo(object):
def has_some_property(self):
...
class Container(object):
def __init__(self):
self.foo_set = set()
def add_foo(self, foo):
self.foo_set.add(foo)
def foo_objects_that_have_property(self):
return set([foo for foo in self.foo_set if foo.has_some_property()])
import unittest
class TestCase(unittest.TestCase):
def testFoo(self):
c = Container()
x, y, z = Foo(), Foo(), Foo()
...
self.assertContentIdentity(c.foo_objects_that_have_property(), set([x, y]))
Важно отметить, что проверка здесь на равенство не пройдет, поскольку изменение объектов, возвращаемых foo_objects_that_have_property()
, может привести к противоречивым результатам в зависимости от того, как эти объекты используются по-разному в Container
, даже если они "равны" в то время теста.