Python嵌套类设计与模拟autospec

时间:2014-05-28 12:00:09

标签: python unit-testing mocking

我正在看这样的类层次结构:

class LevelOne(object):
    def __init__(self,level_two_inst):
        self.level_two_inst = level_two_inst
        self.data = self.compute_sth(level_two_inst)

class LevelTwo(object):
    def __init__(self,level_three_inst):
        self.level_three_inst = level_three_inst
        self.data = self.compute_sth(level_three_inst)

我想进行单元测试LevelOne。由于每个级别的计算步骤相当冗长,我想使用autospec模拟LevelTwo。我还想使用spec_st=True来确保属性数据是LevelTwo的有效属性。

但是,要实例化LevelOne进行测试,我需要模拟LevelTwoLevelThree等等。

我目前的工作是:

class LevelOne(object):
    def __init__(self,level_two_inst=None):
        if level_two_inst is None:
            self.data = None
            return
        self.level_two_inst = level_two_inst
        self.data = self.compute_sth(level_two_inst)

现在,我可以在运行data的测试时设置LevelOne属性。但是,我不希望level_two_inst成为可选属性,因为它确实是必要的。

我是新手测试,尤其是使用模拟测试。任何提示都表示赞赏。

0 个答案:

没有答案