模拟文件在 python 中打开
mock file open in python
我正在尝试模拟打开文件,所有示例都表明我需要
@patch('open', create=True)
但我不断收到
Need a valid target to patch. You supplied: 'open'
我知道补丁需要 open
的完整路径,但我不知道它是什么。事实上,我什至不确定这就是问题所在。
您需要包含模块名称;如果您在脚本中进行测试,则模块名称为 __main__
:
@patch('__main__.open')
否则使用包含您正在测试的代码的模块的名称:
@patch('module_under_test.open')
这样任何使用 open()
内置的代码都会找到修补的全局。
请注意,mock
模块带有一个 mock_open()
utility,可以让您构建一个合适的 open()
文件数据调用:
@patch('__main__.open', mock_open(read_data='foo\nbar\nbaz\n'))
在 Python 3 中你应该使用:
@mock.patch("builtins.open", create=True)
我正在尝试模拟打开文件,所有示例都表明我需要
@patch('open', create=True)
但我不断收到
Need a valid target to patch. You supplied: 'open'
我知道补丁需要 open
的完整路径,但我不知道它是什么。事实上,我什至不确定这就是问题所在。
您需要包含模块名称;如果您在脚本中进行测试,则模块名称为 __main__
:
@patch('__main__.open')
否则使用包含您正在测试的代码的模块的名称:
@patch('module_under_test.open')
这样任何使用 open()
内置的代码都会找到修补的全局。
请注意,mock
模块带有一个 mock_open()
utility,可以让您构建一个合适的 open()
文件数据调用:
@patch('__main__.open', mock_open(read_data='foo\nbar\nbaz\n'))
在 Python 3 中你应该使用:
@mock.patch("builtins.open", create=True)