Skip to content

Latest commit

 

History

History
149 lines (123 loc) · 9.28 KB

README.md

File metadata and controls

149 lines (123 loc) · 9.28 KB
CI/CD TEST Status Code Quality
:octocat: linting: pylint Code style: black CI/CD TEST code: qodana

Проверка REST на базе Pytest

Table of Contents

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

1. GitHub CI Actions

  • Запуск по кнопке Manual TestRun -> Run Workflow

Manual TestRun

2. Remote Clone Project

  • Предполагается что уже установлена версия Python 3.12 и настроен venv
  • Выполнить для установки зависимых пакетов:
(venv)$ cd <директория проекта>
(venv)$ pip install -r requirements.txt

3. Варианты конфигурации

Конфигурация запуска реализована по приоритетам:

  • Приоритет №1: параметризация из командной строки (для CI/CD pipeline)
  • Приоритет №2: параметризация из локального файла config.local.json (не коммитится в Git)
  • Приоритет №3: параметризация из общего файла config.json (коммитится в Git)

4. Запуск скрипта автотестов

Пример использования проброса параметров конфигурации при запуске тестов:

 $ python -m pytest <путь к папке tests>

Пример запуска тестов с фильтром по маркерам, установленным в файле pytest.ini:

 $ python -m pytest <marker1> ... <markerN>
  • Для просмотра всех маркеров: $ pytest --markers
  • Для просмотра всех доступных fixtures: $ pytest --fixtures

fixtures are shown according to specified file_or_dir or current dir if not specified

fixtures with leading '_' are only shown with the '-v' option

5. Отчеты

  • На данном этапе реализации предусмотрен отчет по копке

чтобы просмотреть отчет о запуске автотестов на этапе CI pipeline on: push

  • нажать на кнопку CI/CD TEST
  • Workflow: CI/CD TestRun -> выбрать верхний workflow run: <Commit name> -> Matrix: test -> Job: test (3.12) -> Step: Run Test with pytest

Документация

Описание тестового покрытия

  • Ссылка на требования: в папке проекта \DOC
  • SWAGGER

Логирование

Создание локального логфайла

  • логфайлы копятся в папке .log (папка создается автоматически)
  • для каждого тестового прогона создается отдельный уникальный логфайл с hostname и timestamp в имени
    • при запуске прогона с xdist создается несколько логфайлов по числу воркеров с worker_id в имени
    • если воркеров больше чем тестов, то при следующем запуске удаляются пустые логфайлы, созданные xdist в предыдущей сессии

Доступные настройки логирования

  • настройки логирования находятся в pytest.ini

  • логирование в консоль сообщений о выполнении Allure steps из кода тестов настраивается параметром:

log_cli = true
    • для отключения сообщений с Allure steps в консоль -> log_cli = false
    • при запуске с xdist Allure steps в консоли всегда отсутствуют
    • для переопределения существующих в pytest.ini ключей в команде запуска: pytest -o log_cli=<new_value>
    • отключение сообщений с Allure steps в логфайл - не предусмотрено (всегда присутствуют)
  • детализация сообщений в файле и в консоли зависит от ENV.DEBUG flag:

    • по умолчанию в консоли установлен:
log_cli_level = INFO
    • при выставлении переменной окружения DEBUG = True:
      • -> уровень сообщений в консоль остается бех изменения: log_level = INFO
      • -> уровень сообщений в логфайл понижается до log_level = DEBUG

Создание отчета Allure

  • отчет с результатами запуска каждого тестового прогона формируется в папке allure-results
    • папка создается автоматически
    • содержимое папки очищается от файлов прошлого прогона автоматически
  • настройка папки осуществляется в pytest.ini
addopts = --alluredir allure-results --clean-alluredir

Known issues

  • у цветных строк лога имеются артефакты в отчете Allure: allure-framework/allure-python#806
  • для того чтобы папка allure_results создавалась в корне проекта при запуске тестовой сессии из окна IDE (PyCharm) необходимо настроить в IDE (PyCharm) Run/Debug Configurations
Search -> Run/Debug Configurations -> Edit configuration templates... -> Python tests -> Autodetect
    • заполнить в окне Autodetect поле Working directory: актуальным значением <PROJECT_ROOT>
    • запомнить Template
    • удалить все существующие Run/Debug Configurations сделанные до обновления Template