Как отключить сортировку импорта для выбора файлов, glob или аналогичных в VS Code? - PullRequest
0 голосов
/ 04 апреля 2019

Я пытаюсь смоделировать импорт в 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 автоматически упорядочивает это в алфавитном порядке, и в результате создает Mock после того, как попытается импортировать из модуля с зависимостью.

Как запретить импорту сортировки упорядочить подмножество файлов? Это может быть через список файлов, глобус, регулярное выражение или подобное?

Образ глобуса тестового файла ./tests/test_*.py.


Обновление - Частичное решение опубликовано ниже.

Ответы [ 3 ]

2 голосов
/ 04 апреля 2019

Не думаю, что вам стоит беспокоиться о сортировке импорта. Mock должен позаботиться об этом, ваши тесты должны использовать контекстные менеджеры или декораторы, предоставляемые модулем mock, вместо того, чтобы напрямую присваивать объект Mock.

Взгляните на ' патч '.

Также посмотрите на ' где патчить '

1 голос
/ 09 апреля 2019

В настоящее время вы не можете отключить импортную сортировку для уровня модуля с помощью параметра VS Code-specific (он либо включен, либо выключен).Это как-то должно поддерживаться самой isort.

0 голосов
/ 09 апреля 2019

Проблема здесь в том, что правила autopep8 запускаются во время сохранения.В частности, правило E402, которое требует сначала всех импортов.

Хотя я не смог заставить VS Code или какой-либо из его пакетов запустить подмножество файлов, я нашел решение исключить подмножество правил autopep8.,Вот как выглядит запись settings.json,

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

См. этот ответ для получения дополнительной информации.

...