Мы с вами уже научились автоматизировать тестирование API и даже запустили тесты локально через контейнер Docker. Однако на проекте запускать тесты нужно не локально, а на сервере. Можно, конечно, подключиться через SSH, но тогда все результаты тоже будут на вашем устройстве. Лучше всего интегрировать тесты в систему непрерывной интеграции и доставки (CI/CD) TeamCity. Об этом и пойдёт речь в данной статье!
Условимся, что у вас уже есть доступ к TeamCity. В целом у вас уже будет проект, в котором вам и нужно будет создать ваш билд с тестами. Я же начну с самого создания проекта.
Загружаем проект на GitHub
У вас уже наверняка есть свой репозиторий на проекте и вы будете выгружать все ваши тесты в этот репозиторий. Для тестового сценария в рамках статьи я создам свой. Всё что в нём есть это 2 файла, коллекция и переменные окружения в папке tests
Копируем URL данного репозитория. Он нам пригодится в дальнейшем
Ваш репозиторий должен быть публичным, чтобы не усложнять настройки TeamCity!
Настройка проекта Postman в TeamCity
Создам с нуля новый проект, чтобы было понятно, где, куда и зачем.
Придумываем любое название проекту
Создаём новый билд
Также придумываем название
Для VCS Root будем использовать ссылку нашего репозитория из GitHub.
refs/heads/main - указываем нужную ветку в вашем git, их может быть несколько
Авторизация по логину и паролю, все остальные настройки оставьте по умолчанию. Настройка завершена
Далее перейдём в настройки нашего проекта
Далее Report Tabs и создаём таблицу, где будет отображаться наш отчёт после теста
Название должно совпадать с тем, которое вы прописываете в запуске тестов!
Теперь перейдём в настройки нашего билда и в General Settings указываем тот же файл с отчётом
Настройка Агента в TeamCity
Мы будем запускать тесты прямо через Docker-контейнер, поскольку это делает нас независимыми от настроек на агенте. Для тестового облачного агента нет возможности установить собственные контейнеры, это можно сделать только через TeamCity, к агенту которого у вас есть доступ.
Перейдём во вкладку агенты и нажмём на командную строку.
Я установил свой ПК в качестве агента. Это не сложно сделать следуя по шагам из инструкции.
Рабочая область располагается по адресу -C:\Windows\system32\config\systemprofile. Она нам нужна, чтобы проще установить контейнер через Dockerfile.
Мы уже умеем создавать такой файл из статьи
Поэтому просто берём и копируем его по нужному адресу.
После в терминале TeamCity устанавливаем наш контейнер
docker build -t postman .
Проверим созданный контейнер
С настройкой агента закончили!
Настройка запуска тестов Newman
Создаём новый шаг в сборке. Выбираем Command Line
Наш код запуска тестов через докер выглядит так
docker run --rm -v %cd%:/etc/newman/ postman run dzen.json --environment env.json --insecure --reporters cli,htmlextra --reporter-htmlextra-export "new_report.html"
Есть небольшие изменения с указанием рабочей директории, где расположены наши файлы.
-v %cd% - это как раз указание нужного расположения наших файлов. То есть программа говорит - смотри сюда.
Как это происходит:
- При запуске тестов TeamCity копирует папку test из репозитория Git на хост. В моём случае это папка на моём ПК.
- И уже отсюда запускаются наши тесты
- Так как у нас запуск через контейнер - нам нужно скопировать эти файлы в контейнер Docker.
- Если бы мы запускали на Linux то мы бы указали следующий формат
docker run --rm -v $(pwd):/etc/newman/ postman run dzen.json --environment env.json --insecure --reporters cli,htmlextra --reporter-htmlextra-export "new_report.html"
- На Windows $(pwd) приравнивается к %cd%
- Однако, поскольку в TeamCity символ % используется для обозначения параметров, это нарушает логику работы.
- Поэтому мы просто укажем данную директорию с помощью синтаксиса TeamCity. - %teamcity.build.workingDir%
Если перейдём по этому адресу на своём ПК, то увидим нашу папку tests
- Этот путь как раз и будет равен %teamcity.build.workingDir%
Конечный результат
docker run --rm -v %teamcity.build.workingDir%:/etc/newman/ tennyy/postman:5.24 run dzen.json --environment env.json --insecure --reporters cli,htmlextra --reporter-htmlextra-export "new_report.html"
Как видим тесты прошли успешно.
В нашем проекте создалась новая таблица
Здесь будет храниться ваш отчёт о тестировании, которым могут воспользоваться все члены команды!
Настройка запуска тестов Newman с количеством упавших тестов
Сейчас у нас настроен запуск для тестов postman. Для Teamcity это обычный запуск с командной строки, если все тесты прошли успешно будет success, если хотя бы один упадёт, то будет field.
Для всех членов команды это не очень информативно, поэтому мы можем добавить небольшую настройку.
Как помним в нашем Dockerfile есть установка отчёта
RUN npm install -g newman-reporter-htmlextra
Давайте к этому докер файлу добавим ещё одну установку
RUN npm install -g newman-reporter-teamcity
Напомню, о настройке образа docker я рассказывал в статье
В итоге мы имеем Dockerfile
FROM postman/newman:alpine
RUN npm install -g newman-reporter-htmlextra
RUN npm install -g newman-reporter-teamcity
В нашем агенте обновляем наш образ командной
docker build -t postman:team .
Напомню что Dockerfile лежит по адресу - C:\Windows\system32\config\systemprofile
После этого немного изменим строку запуска
docker run --rm -v %teamcity.build.workingDir%:/etc/newman/ tennyy/postman:5.24 run dzen.json --environment env.json --insecure --reporters cli,htmlextra,teamcity --reporter-htmlextra-export "new_report.html"
После запуска тестов будет детальная статистка упавших и пройденных тестов
В самом билде также появится вкладка Test, где будет также детальный обзор ваших тестов.
Я постарался максимально подробно описать все необходимые шаги. В зависимости от проекта они могут немного отличаться, так как условия запуска и параметры могут быть разными. Но общий принцип остаётся неизменным: загружаем тесты в репозиторий проекта и запускаем их через контейнер Docker.
Расскажите в комментариях, получилось ли у вас и с какими трудностями вы столкнулись.
Вы можете сохранить себе коллекцию по данному разделу - https://api.postman.com/collections/14548453-df841372-4131-42a1-9884-ff45954e298a?access_key=PMAT-01H21BHXSV6P93H93JRD62Q98X
Если у вас есть вопросы или вы просто хотите стать частью команды тестировщиков, то переходи в ТГ канал, где можем пообщаться с единомышленниками и найти много интересных и полезных знаний!Также если вам нужна индивидуальная консультация, менторство и помощь в создании проекта пишите в ТГ канал!