[英]Mock function to return different value based on argument passed
In my test function, my mocks are not behaving properly because when I mock
my get_config
function, I only know how to mock it to return one value.在我的测试函数中,我的模拟行为不正常,因为当我mock
我的get_config
函数时,我只知道如何模拟它以返回一个值。 How can I add some logic to my mock
in order for the mock to return a different value only when get_config
is passed the argument of "restricted"
如何在我的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()
You can assign a function to side_effect
as described in official doc您可以按照官方文档中的说明将函数分配给side_effect
from unittest.mock import Mock
def side_effect(value):
return value
m = Mock(side_effect=side_effect)
m('restricted')
'restricted'
class Ctx():
def get_config(confName):
return confName
def mock_get_config(value):
if value == "conf1":
return "confA"
elif value == "conf2":
return "confB"
else:
return "UnknownValue"
class CtxSourceFileTrial(unittest.TestCase):
def test(self):
mockCtx = Mock()
mockCtx.get_config.side_effect = mock_get_config
self.assertEqual("confA", mockCtx.get_config("conf1"))
self.assertEqual("confB", mockCtx.get_config("conf2"))
#
# By the way I think Python is EXTREMELY screwy, Adligo
#
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.