如何在 VS Code 中为选择的文件、glob 或类似文件关闭排序导入?

Lit*_*les 3 python visual-studio-code vscode-settings

我正在尝试在 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
Run Code Online (Sandbox Code Playgroud)

我需要模拟module_A作为module_to_test.

保存时,VSCode 会自动按字母顺序排序,因此在尝试从具有依赖项的模块导入后创建 Mock。

如何防止排序导入对文件子集进行排序?这可能是通过文件列表、glob、regex 或类似的?

测试文件的全局模式 ./tests/test_*.py.


更新- 下面发布了部分解决方案。

小智 7

如果像我一样,您的 VSCode 配置使用 isort(而不是 autopep8)进行导入排序,那么您可以像这样有选择地覆盖它:

app = Flask(__name__)
from . import views  # isort:skip
Run Code Online (Sandbox Code Playgroud)

即在# isort:skip你不想跳转到文件顶部的导入中添加注释。

来源:https : //github.com/timothycrosley/isort#skip-processing-of-imports-outside-of-configuration


mrt*_*rts 7

VS Code 在保存时运行autopep8 ,您可以在行末尾添加# noqa或注释以从检查/排序中排除该行:# nopep8

sys.modules['module_A'] = Mock()

from module_to_test import function_to_test # noqa
Run Code Online (Sandbox Code Playgroud)


Bre*_*non 1

目前,您无法通过 VS Code 特定的设置(打开或关闭)关闭每个模块级别的导入排序。它需要以某种方式得到 isort 本身的支持。

  • @cmuk 的 `# isort:skip` 方法对我有用 (2认同)