将 2+ mock.patch 组合成一个

说我有:


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):

    ...


青春有我
浏览 118回答 1
1回答

DIEA

您可以使用将要修补的目标对象作为参数的函数,并返回一个装饰器函数,该函数遍历目标对象以用于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
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python