首页  >  文章  >  后端开发  >  如何在 Python 单元测试中使用 With 语句模拟 Open 函数?

如何在 Python 单元测试中使用 With 语句模拟 Open 函数?

DDD
DDD原创
2024-10-20 16:25:29358浏览

How to Mock the Open Function with With Statements in Python Unit Tests?

在 Python 中使用 With 语句模拟 Open

当测试使用带有 with 语句的 open() 函数的代码时,有必要模拟公开调用以断言预期行为。以下是如何使用 Python 中的 Mock 框架执行此操作:

Python 3

  1. Patchbuiltins.open: 修补内置函数。使用模拟框架中的mock_open打开函数。
  2. 使用Patch作为上下文管理器:使用patch作为上下文管理器,它返回替换原始对象的模拟对象。
  3. 调用打开:使用文件路径打开文件。
  4. 断言内容:断言从文件中读取的内容符合预期。
  5. 断言模拟调用: 断言使用正确的文件路径参数调用模拟对象。
<code class="python">from unittest.mock import patch, mock_open

with patch("builtins.open", mock_open(read_data="data")):
    mock_file = open("path/to/open")
    assert mock_file.read() == "data"
mock_file.assert_called_with("path/to/open")</code>

或者,您可以使用 patch 作为装饰器,并将 new_callable 参数设置为mock_open:

<code class="python">@patch("builtins.open", new_callable=mock_open, read_data="data")
def test_patch(mock_file):
    open("path/to/open")
    assert mock_file.read() == "data"
    mock_file.assert_called_with("path/to/open")</code>

Python 2

  1. 修补 __builtin__.open: 修补 __builtin__.open 而不是 Python 中的builtins.open 2.
  2. 导入模拟:使用 pip install mock 安装模拟。
  3. 使用 Patch 作为上下文管理器:遵循与 Python 中相同的步骤3.

以上是如何在 Python 单元测试中使用 With 语句模拟 Open 函数?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn