При использовании VSCode, python и абсолютного импорта тесты не обнаружены - PullRequest
0 голосов
/ 23 сентября 2019

Я пытаюсь добавить модульные тесты в свой проект на Python и не могу получить VS Code для обнаружения своего теста.Проблема в том, что я пытаюсь импортировать class, который я тестирую.

  • Если я пытаюсь run файл теста, он проходит.
  • Если я пропущу from A.myfile import MyFile, тест обнаружен.

Вопрос : Что я здесь не так делаю?


Структура файла :

root
├── A
│   ├── __init__.py
│   └── myfile.py
└── tests
    ├── __init__.py
    └── A
        ├── __init__.py
        └── test_myfile.py

myfile.py :

class MyFile(object):
    def __init__(self):
        self.value = 1

test_myfile.py :

import unittest
from A.myfile import MyFile

class Test_MyFile(unittest.TestCase):
    def test_my_file(self):
        self.assertTrue(True)

if __name__ == "__main__":
    unittest.main()

.env :

PYTHONPATH=PATH_TO_ROOT

settings.json :

{
    "python.pythonPath": "PATH_TO_PYTHON\python.exe",
    "python.testing.unittestArgs": [
        "-v",
        "-s",
        "./tests",
        "-p",
        "test_*.py",
        "-t",
        "."
    ],
    "python.envFile": "${workspaceFolder}/.env",
    "python.testing.pytestEnabled": false,
    "python.testing.nosetestsEnabled": false,
    "python.testing.unittestEnabled": true
}

Журнал тестов Python:

start

Версия VSCode: 1.38.1
Версия Python: 2.7.14 (x64)

1 Ответ

0 голосов
/ 24 сентября 2019

Это, вероятно, из-за значения, установленного для -t.Если unittest интерпретирует, что - использует настройку по умолчанию, тогда он использует -s, который является каталогом tests, и поэтому ваша строка import A импортирует tests/A/__init__.py вместо A/__init__.py, что приводит кImportError, когда A.myfile не может быть найден (проверьте вывод теста, чтобы увидеть ошибку).

Измените это - на ., и мы надеемся, что это должно исправить положение для привязки верхнего каталогадля вашего проекта.

...