ПОСТРОЕНИЕ ПРОЦЕССА АВТОМАТИЗАЦИИ ТЕСТИРОВАНИЯ ДЛЯ REST API С 0 ДО CI/CD ЗА 1.5 ЧАСА НА PYTHON

preview_player
Показать описание

Таймкоды для удобства 🙏
0:00:00 - Вступление
00:01:36 - Создание проекта в Gitlab
00:01:56 - Создание Access токена для доступа к артефактам
00:03:12 - Клонирование репозитория
00:03:38 - Открытие проекта в IDE
00:03:51 - Создание виртуального окружения и установка зависимостей
00:05:10 - Выбор API для тестирования
00:05:44 - Проверка работы API
00:08:43 - Начинаем строить архитектуру
00:14:46 - Создание фикстуры для инициализации окружения
00:20:38 - Реализация хедеров
00:22:00 - Реализация эндпоинтов + фишка с lambda
00:25:55 - Реализация пейлодов
00:28:16 - Реализация API-методов (шагов тестов)
00:36:38 - Первый тест
00:38:43 - Создание pydantic-модели
00:44:24 - Подтягиваем Allure маркеры
00:45:06 - Используем pydantic-модель в шагах теста
00:45:34 - Доступ к полям модели в тестах
00:49:16 - Как писать end-2-end тесты
00:52:33 - Пишем валидатор в pydantic
00:56:15 - Отлавливаем дефекты и проверяем качество теста
00:58:35 - Генерация Allure-отчета
01:00:09 - Создание dockerfile
01:03:25 - Создание docker-compose
01:10:26 - Генерация отчета в HTML-документ
01:12:36 - Добавляем .gitignore и пушим репозиторий
01:14:59 - Прокидываем токены в Gitlab Variables
01:16:16 - Пишем базовую конфигурацию для Gitlab CI
01:18:26 - Подключение docker-сервиса + концепция раннера
01:24:40 - Запуск первого пайплайна
01:26:48 - Инициализация Gitlab Pages
01:27:10 - Реализация хранения истории Allure
01:31:04 - Нюанс про историю Allure
01:31:48 - Запуск тестов по кнопке
01:32:14 - Запуск тестов по расписанию

-Описание видео:
Это запись моего live-кодинг вебинара, который я проводил перед запуском своего авторского курса по построению процессов автоматизации с нуля.

Он проводился для демонстрации малой части того уровня знаний, который студенты получат на моем курсе) Все просили выложить в общий доступ, готово!)

#тестирование #automation #qa #python #api #rest #aqa #автоматизация #cicd #pytest #docker #allure
Рекомендации по теме
Комментарии
Автор

Лучшее видео что я видел про api тестирование. Обычные видео про api тестирование включают пару запросов в requests а тут все есть. Спасибо за видео.

АйбекХолбаев
Автор

Лучшее что я видел про автоматизацию API :)

artem_lukevich
Автор

самый лучшей E2E курс автоматизации, спасибо большое

AndrewBondar-pjze
Автор

Спасибо. Как всегда, все на высоком уровне.

bearxl
Автор

Имеется ряд вопросов:
1) Тут получение токена - частный случай, т.к. это статическая переменная
В большинстве случаев получение токена это метод, который возвращает его в ответе
Как в этом случае быть? Делать фикстуру получения токена в которой будет сам метод получения токена, а затем прокидывать его в каждом тесте?
Если так, то и вынос хедеров так же под вопросом, их нужно будет оставлять в api методе, чтобы можно было туда фикстуру приткнуть в тесте

Или же не делать фикстуру, а staticmethod, который будет возвращаться токен, а в headers сделать глобальную переменную, в которую запихивать полученный токен и прокидывать в каждый хедер?

2) Зачем делать базовые проверки (статус код и контент тайп) в api_users? А если нужно проверять негативные сценарии? Не логичнее вынести данные проверки в сам тест?

3) По Payloads тоже непонятно, почему там один файл? У нас например имеется сервис Users и там много ручек, для каждой ручки будут свои пейлоады и соответственно свой файлик и класс с ними
Мы в апишке под каждое тело будем свой api метод писать? Не логичнее его так же в тесте передавать?

4) Зачем юзать model(**repsonse.json)? Он не работает с массивом, если тот приходит в ответе. Почему бы не юзать

В общем api_users получился вообще не абстрактным каким-то... Поправь меня пожалуйста, если я не прав...

shurikenoff
Автор

Добрый день.
Сделал всё как на видео, на после ввода команды "docker-compose up api-tests" пишет

docker-compose : Имя "docker-compose" не распознано как имя командлета, функции, фай
ла сценария или выполняемой программы. Проверьте правильность написания имени, а так
же наличие и правильность пути, после чего повторите попытку.

Все перепроверил, в чем ещё может быть ошибка?

РусланМатыгуллин-ыь
Автор

Очень понятно рассказано, интересно в каком месте можно параметризировать при таком подходе?

strokan-om
Автор

Ещё вопросик, при использовании lambda в endpoints PEP8 ругается:
PEP 8: E731 do not assign a lambda expression, use a def

Везде не рекомендуются такие конструкции, а в некоторых местах и вообще его называют антипаттерном, хотя они и действительно упрощают жизнь

shurikenoff
Автор

Привет) уровень качества у твоих видео зашкаливает, спс за годный контент!

подскажи какую мышь используешь? клава слышно что маковская, а вот мышь по звуку как логитеч звучит(но это не точно))

kirillfedchenko
Автор

Подскажите, в чем может быть проблема. При выполнении команды python3 -m venv venv - на win10 получаю ошибку "Python was not found; run without arguments to install from the Microsoft Store, or disable this shortcut from Settings > Manage App Execution Aliases."
Пайтон установлен.

angry_fox
Автор

оч полезное видео, супер. а что за приложуха для работы с буфером обмена, внизу экрана вылазит?

zubescu
Автор

когда пытаюсь запустить, выходит такая ошибка ERROR: file or directory not found: STAGE=prod, что можно сделать?

blackberry
Автор

Подойдет такое построение проекта, если я пишу на JS + Playwright ?

Andrey-cd
Автор

у всех такую ошибку выдает? 'code': 404, 'message': 'Could not find backlog task with "taskId": . Please set taskId of your current backlog task to "X-Task-Id" header'

doctorfalco
Автор

А если нет возможности записаться на курс, можно видео с уроков отдельно приобрести?)

БогданЧорний-эш
Автор

А что за расширение, что пейчарм тебе подсвечивает серым какой код ты хочешь написать?

waf
Автор

подскажи пожалуйста что за тема стоит в pycharm?

khafizovilnaz
Автор

Искал медь, а нашел золото, супер годно🔥🔥🔥

Alexey__Vlasov
Автор

pip install pytest pydantic requests Faker python-dotenv allure-pytest

PavelSavchuk-jw