如何使用unittest.mock模擬上下文管理器中使用的物件
當測試使用with語句模擬的程式碼時,可以是底層對象具有挑戰性。讓我們考慮以下範例:
def testme(filepath): with open(filepath) as f: return f.read()
要使用 unittest.mock 來測試此函數,我們需要模擬 open 函數。具體方法如下:
Python 3:
Python 2:
範例:
<code class="python">from unittest.mock import patch, mock_open @patch("builtins.open", new_callable=mock_open, read_data="data") def test_patch(mock_file): assert open("path/to/open").read() == "data" mock_file.assert_called_with("path/to/open")</code>
請記住,在Python 3 中,patch 會將模擬物件作為參數傳遞給您的測試函數,而在Python 2 中,您必須明確地對模擬檔案進行斷言。
以上是如何使用unittest.mock模擬上下文管理器中使用的物件?的詳細內容。更多資訊請關注PHP中文網其他相關文章!