我试图模仿文件开开,所有的例子表明,我需要模拟文件在python
@patch('open', create=True)
,但我不断收到
Need a valid target to patch. You supplied: 'open'
我知道补丁需要完整虚线路径open
,但我不知道它是什么。事实上,我甚至不确定这是什么问题。
我试图模仿文件开开,所有的例子表明,我需要模拟文件在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)
1.你发布的内容,我们不能告诉你路径应该是什么,或者如果这是问题。给一个[mcve]。 2.你知道这里有['mock_open'](https://docs.python.org/3/library/unittest.mock.html#mock-open)吗? – jonrsharpe