在Python 單元測試框架中模擬With 語句中的開啟檔案
在測試使用with 語句中開啟檔案的程式碼時,需要模擬這些開啟的檔案以進行準確的單元測試。本文深入探討了使用 Python 的 Mock 框架模擬此類檔案的方法。
Python 版本 3
Mock 框架提供了 mock_open 函數,可以結合使用使用修補程式上下文管理器來模擬開啟的檔案。 patch 函數用作上下文管理器,傳回替換修補物件的物件:
<code class="python">from unittest.mock import patch, mock_open with patch("builtins.open", mock_open(read_data="data")) as mock_file: assert open("path/to/open").read() == "data" mock_file.assert_called_with("path/to/open")</code>
或者,patch 函數可以用作帶有 new_callable 參數的裝飾器。請記住,patch 未使用的其他參數將傳遞給 new_callable 函數:
<code class="python">@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 版本2
對於Python 2,需要修補__builtin__.open 模組而不是builtins.open,並且必須透過pip 單獨安裝模擬框架:
<code class="python">from mock import patch, mock_open with patch("__builtin__.open", mock_open(read_data="data")) as mock_file: assert open("path/to/open").read() == "data" mock_file.assert_called_with("path/to/open")</code>
這些技術允許有效模擬with 語句中的開啟文件,從而促進Python 應用程式的全面單元測試。
以上是如何使用單元測試框架在 Python 的 With 語句中模擬開啟的檔案?的詳細內容。更多資訊請關注PHP中文網其他相關文章!