Pytest, запускаемый test explorer из vscode, не находит модули, установленные pip в режиме разработки

#python #visual-studio-code #pip #pytest

#python #visual-studio-code #pip #pytest

Вопрос:

Запуск тестов для моего кода проекта, установленного pip в режиме разработчика ( pip install -e . ), выполняется путем выполнения pytest из командной строки. Однако выполнение одних и тех же тестов в том же Python virtualenv с использованием пользовательского интерфейса Test Explorer Visual Studio Code не работает, Python вызывает ModuleNotFoundError s.

Я подтвердил, что мой пакет установлен pip list -v , который печатает:

 myproject            0.0.0      /path/to/myproject
 

Кроме того, я написал неудачный тест, чтобы получить путь Python во время выполнения теста:

 import sys


def test_some_test():
    print(sys.executable)
    print(sys.path)

    assert False
 

Это подтверждает, что исполняемый файл Python является тем, из virtualenv которого установлен мой код проекта. Но sys.path разница между запуском Test Explorer и запуском командной строки. Запуск Test Explorer не включает /path/to/myproject в sys.path себя, в то время как запуск командной строки включает. Очевидно, что если путь к проекту включен в sys.path , пакет может быть импортирован. Почему он отсутствует при запуске пользовательского интерфейса Test Explorer? Как заставить Test Explorer использовать пакеты, установленные в режиме разработки pip ?

Я должен добавить, что модули, которые я пытаюсь импортировать в своих тестах, сами находятся в пакете, который называется mylib . Итак, фактический импорт в моем тесте выглядит так

 from mylib import function_under_test


def test_function_under_test():
    ...
 

Ответ №1:

Обновить

Теперь эта проблема исправлена. Это просто работает.

Старый ответ

Повозившись с проблемой больше, я обнаружил, что это ошибка в расширении Python для vscode, см. выпуски 14579 и 14570 на github.com .

В качестве обходного пути можно либо установить расширение пользовательского интерфейса Little Fox Team Test Explorer, либо старую версию расширения Microsoft Python (v2020.9.114305).