我试图在python中模拟导入进行测试。我的代码看起来像这样。
"""Python file description."""
import sys
import pytest
import datetime as dt
from unittest.mock import Mock
sys.modules['module_A'] = Mock()
from module_to_test import function_to_test
在哪里我需要模拟module_A
作为module_to_test
的依赖。
在保存时,VSCode按字母顺序自动排序,因此在尝试从具有依赖项的模块导入后创建模拟。
如何防止Sort Imports订购文件子集?这可以通过文件列表,glob,正则表达式或类似的?
测试文件./tests/test_*.py.
的全球模式
更新 - 下面发布的部分解决方案。
目前,您无法通过VS Code特定设置(打开或关闭)关闭每个模块级别的导入排序。它需要以某种方式由isort本身支持。
这里的问题来自autopep8规则在保存时运行。具体而言,规则E402,首先要求所有进口。
虽然我无法让VS Code或其任何软件包在文件子集上运行,但我确实找到了排除autopep8规则子集的解决方案。这是settings.json
条目的样子,
"python.formatting.provider": "autopep8",
"python.formatting.autopep8Args": [
"--ignore",
"E402"
],
有关更多信息,请参阅this answer。