模拟函数根据传递的参数返回不同的值

时间:2018-06-07 18:35:24

标签: python mocking

在我的测试函数中,我的模拟行为不正常,因为当我mock我的get_config函数时,我只知道如何模拟它以返回一个值。我如何向mock添加一些逻辑,以便只有在get_config传递"restricted"

的参数时,模拟才会返回不同的值
def func():
    conf1 = get_config("conf1")
    conf2 = get_config("conf2")
    conf3 = get_config("conf3")
    restricted_datasets = get_config("restricted")
    dataset = get_config("dataset")
    if dataset not in restricted_datas:
        return run_code()

1 个答案:

答案 0 :(得分:1)

您可以按照official doc

中的说明将功能分配给side_effect
from unittest.mock import Mock

def side_effect(value):
    return value

m = Mock(side_effect=side_effect)
m('restricted')
'restricted'