Swa*_*ing 2 python python-2.7 python-3.x python-unittest
我正在编写一个 API 客户端库。该库旨在支持 Python 2.7+ 和 Python 3+。
现在编写测试并尝试使用MagicMock和patch。根据此处的文档https://cpython-test-docs.readthedocs.io/en/latest/library/unittest.mock.htmlunittest.mock,如果我安装mock(使用pip install mock==3.0.5),则有一个向后移植。但是当我将它安装在我的 docker 镜像中时,该行:
from unittest.mock import patch
Run Code Online (Sandbox Code Playgroud)
仍然失败:
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
Run Code Online (Sandbox Code Playgroud)
我可能在这里对文档感到困惑,但任何帮助在 Python 2.7 和 3.8 中运行相同的代码将不胜感激。谢谢!
蟒蛇 2.x
使用此导入:
from mock import patch, MagicMock
Run Code Online (Sandbox Code Playgroud)
蟒蛇 3.3+
mock已包含在unittest模块中,可以通过以下方式导入:
from unittest.mock import patch, MagicMock
Run Code Online (Sandbox Code Playgroud)
在运行时检查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
Run Code Online (Sandbox Code Playgroud)
它在做什么
sys.version_info[0]是主要版本号,其中 assys.version_info[1]将为您提供次要版本号。
python 版本检查将检查它是 python2还是 python 3。
| 归档时间: |
|
| 查看次数: |
931 次 |
| 最近记录: |