Python-修补模块功能?

时间:2019-11-02 05:09:26

标签: python mocking

我正在尝试使用从另一个模块导入的函数的类中的方法进行测试,我想修补此导入的模块以简化测试,但我似乎无法弄清楚,尝试了补丁的各种路径,但没有运气。

举一个简化的例子,我有一个像这样的项目结构:

Dir Structure

在Adders文件夹中,我有一个AddFour类和一个Util模块,它们看起来像这样,给AddFour一个值,并从{{1} }方法

giveFour

然后我进行了一个测试,出于示例的原因,我试图修补# Util.py def giveFour(): return 4 #AddFour.py from Adders.Util import giveFour class AddFour: def add(self, value): return value + giveFour() 函数以使其返回5

我已经读了一些书,常见的建议是查找对象的补丁,但是我做错了

giveFour

如果可能的话,有人能指出我正确的方向吗?我觉得我缺少真正明显的东西

1 个答案:

答案 0 :(得分:0)

您的代码应为:

class AddFour_Tests(unittest.TestCase):

    @patch('adders.AddFour.giveFour')
    def test_addfour(self, give_four):
        give_four.return_value = 5 
        add4 = AddFour()
        result = add4.add(5)
        self.assertEqual(result, 10) 

您想装饰被调用模拟函数的测试方法,因为模拟仅在该方法中处于活动状态。