为了账号安全,请及时绑定邮箱和手机立即绑定

将 2+ mock.patch 组合成一个

将 2+ mock.patch 组合成一个

青春有我 2022-06-02 11:59:07
说我有:import mock...@mock.patch("function_1")@mock.patch("function_2")def my_test(self, f1, f2):    f1.return_value="foo"    f2.return_value="bar"    ...function_1 和 function_2 非常相似,并在多个测试函数中进行了模拟。我很想模块化这种模式(修补两个功能)。有没有这样的方法?理想的结果如下所示。@grouppatch("function_1_and_2")def my_test(self):    ...
查看完整描述

1 回答

?
DIEA

TA贡献1820条经验 获得超2个赞

您可以使用将要修补的目标对象作为参数的函数,并返回一个装饰器函数,该函数遍历目标对象以用于mock.patch修补装饰函数的对象:


def grouppatch(*targets):

    def decorator(func):

        for target in targets:

            func = mock.patch(target)(func)

        return func

    return decorator

以便:


@grouppatch('builtins.bool', 'builtins.int')

def my_test(mock_bool, mock_int):

    mock_bool.return_value = True

    mock_int.return_value = 100

    print(bool(False), int(10))


my_test()

输出:


True 100


查看完整回答
反对 回复 2022-06-02
  • 1 回答
  • 0 关注
  • 117 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信