Python Pytest:在模拟项的method命令上返回值

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) 试验 当我运行

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)
试验

当我运行测试时,第一个输出是config
MagicMock 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。。。这很有道理。非常感谢。我没有意识到你必须像那样把它拴起来很乐意帮忙!:-)