我試圖模仿文件開開,所有的例子表明,我需要模擬文件在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