Запуск тестов

Команда run_tests использует тестовую инфраструктуру сабмодуля. Она импортирует Python-модули, ищет наследников BaseTest или BaseLocustTest и вызывает их метод run().

Команда

uv run manage.py run_tests

Это служебная команда для запуска тестовых классов сабмодуля и load tests, если они оформлены через BaseTest и BaseLocustTest.

По умолчанию: Без дополнительных параметров команда ищет подходящие тестовые классы в текущей рабочей директории.

Параметры

Параметр Описание
--directory, -d Каталог, в котором ищутся Python-модули. По умолчанию используется текущая рабочая директория.
--recursive, -r Включает рекурсивный обход поддиректорий при поиске модулей.
--load_tests Переключает критерий поиска с BaseTest на BaseLocustTest.
--report При использовании вместе с --load_tests сохраняет JSON-отчет с результатами запуска.

Дополнительные примеры запуска

Искать тесты рекурсивно в каталоге

uv run manage.py run_tests --directory ./tests --recursive

Подходит, если тестовые модули разложены по подпапкам и их нужно обходить рекурсивно.

Запустить load tests и сохранить JSON-отчет

uv run manage.py run_tests --directory ./tests/load_tests --load_tests --report

В этом режиме команда ищет наследников BaseLocustTest и записывает агрегированный отчет в файл рядом с корнем проекта.

Как работает

  1. Проверяет существование переданного каталога и собирает список всех .py-файлов, при необходимости рекурсивно.
  2. Пропускает модули с именами, заканчивающимися на _view или _views, затем импортирует остальные файлы как Python-модули.
  3. Ищет классы-наследники BaseTest либо BaseLocustTest и для каждого найденного класса вызывает метод run().
  4. Если выбран режим load tests и включен --report, записывает агрегированный JSON-файл вида ../ltest_report_D_M_Y.json.

Что важно учесть

  • Команда запускает классы, унаследованные от BaseTest и BaseLocustTest, поэтому тестовые сценарии должны быть оформлены в этой структуре.
  • Импорт модулей динамический, поэтому удобнее запускать команду из корня репозитория с корректным PYTHONPATH.
  • Если подходящих наследников не найдено, команда завершится сообщением об ошибке, даже если Python-файлы в каталоге есть.
  • Отчет для load tests записывается на уровень выше текущей рабочей директории, это поведение стоит учитывать перед запуском в CI или в контейнере.