如何关闭VS Code中选择的文件,glob或类似的Sort Imports?

问题描述 投票:0回答:3

我试图在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.的全球模式


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

python visual-studio-code vscode-settings
3个回答
1
投票

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


2
投票

我认为你不应该担心排序进口。模拟应该照顾它,你的测试应该使用mock模块提供的上下文管理器或装饰器,而不是自己直接分配Mock对象。

看看'patch'。

还看'where to patch'


0
投票

这里的问题来自autopep8规则在保存时运行。具体而言,规则E402,首先要求所有进口。

虽然我无法让VS Code或其任何软件包在文件子集上运行,但我确实找到了排除autopep8规则子集的解决方案。这是settings.json条目的样子,

    "python.formatting.provider": "autopep8",
    "python.formatting.autopep8Args": [
        "--ignore",
        "E402"
    ],

有关更多信息,请参阅this answer

© www.soinside.com 2019 - 2024. All rights reserved.