Python模拟使用现有对象但提供其他方法

时间:2016-05-09 16:50:36

标签: python python-2.7 unit-testing mocking

我有一个主要提供一组ID的类,但有其他方法。像这样:

class PoundIds(object):
    ....
    @property
    def cats(self):
        return self.cats

    @property
    def dogs(self):
        return self.dogs

    @property
    def animal_ids(self):
        return set(dog.id for dog in self.dogs) | set(cat.id for cat in self.cats)

    def __contains__(self, id):
        return id in self.animal_ids

    def __iter__(self, id):
        return self.animal_ids.__iter__()

出于很多目的,我可以用set([1,2,3])来模拟这个,但不是全部。如果我可以创建一个模拟,提供我需要的特殊方法,否则将调用传递给一个集合,这将很好地工作。可以模拟创建一个基于现有对象的模拟但是给它额外的方法吗?它似乎应该如此,但我不知道如何做到这一点。

0 个答案:

没有答案