首页 > 解决方案 > 如何在 Python 中模拟继承的协作方法

问题描述

我有一个类似的设置。

class A:
    def send_it(some_data):
        data = {}
        ....fill data
        send('url',data)


class B(A):
    def do_real_work():
        ... do stuff
        self.send_it(some_data)`

我的目标是测试 B.do_real_work()。

我想做的是使用自定义实现来模拟 b.send_it() 方法,该实现允许我将数据对象分配给某个全局或实例变量,以便对其进行检查。

在实际测试 do_real_work() 方法时,我无法弄清楚如何模拟方法 (send_it())。

标签: pythonunit-testingmocking

解决方案


您可以将模拟应用到被调用的方法中。

from unittest.mock import MagicMock
b = B()

b.send_it = MagicMock()

b.do_real_work() # It calls MagicMock() instead of A.send_it()

推荐阅读