Python добавление модульного теста внутри пакета - PullRequest
1 голос
/ 26 мая 2020

У меня есть пакет python, для которого я пытаюсь написать модульные тесты. Пакет выглядит следующим образом:

helper/
utils/
app/
requirements.txt
README.md
tests/

Я пришел из java фона, поэтому я подумал об организации тестов в том же пакет как исходный, поэтому мой каталог тестов выглядит следующим образом

tests/
  helper/
    helper_a_test.py
  utils/
    util_a_test.py
  app/
    myapp_test.py

, когда я пытаюсь вызвать тесты, как показано ниже

python -m unittest discover

Тест не проходит из-за ошибки импорта из источника с ошибкой модуль app, helper, utils не найдены. У меня есть __ init __. Py файл - это все мои пакеты. Я переместил все тесты внутри подкаталога tests в каталог tests root, как показано ниже.

tests/
  helper_a_test.py
  util_a_test.py
  myapp_test.py

Теперь все тесты работают должным образом. Может ли кто-нибудь объяснить, почему это происходит, а также является ли хорошей практикой хранить все тесты в одном каталоге, а не в отдельном пакете?

1 Ответ

1 голос
/ 26 мая 2020

У вас есть как минимум два способа go вернуться к исходной структуре и заставить ее работать:

  • Первый и самый прямой - это добавление __init__.py в ваш тест структура (на всех уровнях, а также папка тестов, которую вы могли пропустить).

  • Второй - преобразование вашего кода в пакет python (добавление setup.py , чтобы ваше приложение можно было установить с помощью pip), установите свой пакет в локальном интерпретаторе и затем запустите тесты.

Я бы также предложил использовать pytest и вместо этого напрямую вызвать pytest из python -m unittest.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...