gpt4 book ai didi

python - 如何在 Python 3.8+ 和 Python 2.7+ 中使用 unittest.mock 包?

转载 作者:行者123 更新时间:2023-12-05 08:39:27 29 4
gpt4 key购买 nike

我正在编写 API 客户端库。该库旨在同时支持 Python 2.7+ 和 Python 3+。

现在编写测试并尝试使用 MagicMockpatch。根据此处的文档,https://cpython-test-docs.readthedocs.io/en/latest/library/unittest.mock.html ,如果我安装 mock(使用 pip install mock==3.0.5),则有一个 unittest.mock 的反向端口。但是当我将它安装在我的 docker 镜像中时,该行:

from unittest.mock import patch

仍然失败:

Traceback (most recent call last):
File "/opt/conda/envs/py27/lib/python2.7/runpy.py", line 174, in _run_module_as_main
"__main__", fname, loader, pkg_name)
File "/opt/conda/envs/py27/lib/python2.7/runpy.py", line 72, in _run_code
exec code in run_globals
File "/library_wq-api-utils/wq_api_utils/tests/tests.py", line 3, in <module>
from unittest.mock import patch
ImportError: No module named mock

我在这里可能对文档感到困惑,但如果能帮助我在 Python 2.7 和 3.8 中运行相同的代码,我们将不胜感激。谢谢!

最佳答案

Python 2.x

使用这个导入:

from mock import patch, MagicMock

Python 3.3+

mock 已包含在 unittest 模块中,可以通过以下方式导入:

from unittest.mock import patch, MagicMock

运行时检查python版本

import sys
if sys.version_info[0] < 3:
from mock import patch, MagicMock
if sys.version_info[0] > 3:
from unittest.mock import patch, MagicMock

它在做什么

sys.version_info[0] 是主要版本号,而 sys.version_info[1] 会给出次要版本号。

python 版本检查将检查它是 python 2 还是 python 3

关于python - 如何在 Python 3.8+ 和 Python 2.7+ 中使用 unittest.mock 包?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59362895/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com