[英]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()
實用程序 ,它允許您使用文件數據構建合適的open()
調用:
@patch('__main__.open', mock_open(read_data='foo\nbar\nbaz\n'))
在Python 3中你應該使用:
@mock.patch("builtins.open", create=True)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.