Python Pytest:在模拟项的method命令上返回值
python 3.6 我试图将模拟项的输出设置为字符串,但遇到了错误。通常的想法是使用Python Pytest:在模拟项的method命令上返回值,python,mocking,pytest,Python,Mocking,Pytest,python 3.6 我试图将模拟项的输出设置为字符串,但遇到了错误。通常的想法是使用mock.return\u value或mock.side\u effect,但这对我不起作用: 剧本 def main(): config = Config(config_env) print('the config ',config) table = config.get(config_key,"table") print(table) 试验 当我运行
mock.return\u value
或mock.side\u effect
,但这对我不起作用:
剧本
def main():
config = Config(config_env)
print('the config ',config)
table = config.get(config_key,"table")
print(table)
试验
当我运行测试时,第一个输出是configMagicMock name='config()'id='123123'>
Great。现在,我希望能够将config.get(…)
的输出作为字符串
config_mock.return_value = 'my string'
失败,因为它将值config
转换为字符串,并且您无法将.get
放在字符串上。下一步我试试
config_mock.get.return_value = 'my string'
然而,这也失败了。输出是
,这是一个与以前不同的id,但它应该是我的字符串
为config.get(…)
返回特定输出的正确方法是什么?您还可以使用,并在调用时定义mock的所有属性
def test_main_success(self):
with patch('path.Config.get', return_value="my string")a as config_mock:
main()
作为对注释的补充,您还可以在调用时使用和定义mock的所有属性
def test_main_success(self):
with patch('path.Config.get', return_value="my string")a as config_mock:
main()
config\u mock.return\u value.get.return\u value='my string'
oh。。。这很有道理。非常感谢。我没有意识到你必须像那样把它拴起来很乐意帮忙!:-)config\u mock.return\u value.get.return\u value='my string'
oh。。。这很有道理。非常感谢。我没有意识到你必须像那样把它拴起来很乐意帮忙!:-)