Python Unittest – как правильно обрабатывать тесты в разных папках и тестовых наборах с общей базой?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Python Unittest – как правильно обрабатывать тесты в разных папках и тестовых наборах с общей базой?

Сообщение Anonymous »

Мой проект выглядит так:

Код: Выделить всё

|- src/
|  |- my_package/
|     |- __init__.py
|     |- ...
|
|- tests/
|  |- group1/
|  |  |- __init__.py (empty)
|  |  |- test_thing_1.py
|  |- ...
|  |- base_test_case.py
|
|- pyproject.toml
Здесь test_thing_1.py (и другие тестовые файлы) используют базовый класс TestCase внутри base_test_case.py.

Как мне импортировать этот базовый класс в тестовый файл?

Подробнее. Используя приведенную выше структуру, вы можете запускать тесты, сначала устанавливая исходный код, а затем запуская unittest:

Код: Выделить всё

pip install -e .
python -m unittest discover tests/
Каждый тестовый файл (например, test_thing_1.py) может получить доступ к исходному коду пакета как соответствующий глобальный импорт (каталог src/ защищает от неоднозначных пакетов):< /p>

Код: Выделить всё

from mypackage import MyClass

class SomeTestCase(TestBase):
# ...
Но теперь у меня также есть базовый тестовый пример, который я буду расширять для каждого реального тестового примера:

Код: Выделить всё

# file: base_test_case.py

class TestBase(unittest.TestCase):
# ...
И я хочу организовать свои тесты по подпапкам. Это нормально, если каждая папка содержит файл __init__.py.
А теперь: как мне импортировать TestBase в мои тестовые файлы, чтобы тесты работают стабильно?

Что я пробовал:

Код: Выделить всё

from mypackage import MyClass

# OR:
from ..base_test_case import TestBase
# OR:
from .base_test_case import TestBase
# OR:
from base_test_case import TestBase

class SomeTestCase(TestBase):
# ...
  • Первый из них работает для запуска теста внутри PyCharm, но не работает для запуска тестов обнаружения python -m unittest/
  • Второй работает для запуска тестов обнаружения python -m unittest/group1/, в противном случае происходит сбой
  • Третий работает для тестов обнаружения python -m unittest/ , но в противном случае происходит сбой
Я полагаю, что могу установить базовый тестовый пример вместе с остальной частью моего пакета, чтобы сделать возможным абсолютный импорт. Однако я не хочу отправлять ничего, связанного с моими тестами.

Подробнее здесь: https://stackoverflow.com/questions/782 ... d-shared-b
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»