Найти тему

Тестирование в Postman. Как запустить тесты с помощью Docker в TeamCity. Часть 17

Оглавление

Мы с вами уже научились автоматизировать тестирование API и даже запустили тесты локально через контейнер Docker. Однако на проекте запускать тесты нужно не локально, а на сервере. Можно, конечно, подключиться через SSH, но тогда все результаты тоже будут на вашем устройстве. Лучше всего интегрировать тесты в систему непрерывной интеграции и доставки (CI/CD) TeamCity. Об этом и пойдёт речь в данной статье!

Условимся, что у вас уже есть доступ к TeamCity. В целом у вас уже будет проект, в котором вам и нужно будет создать ваш билд с тестами. Я же начну с самого создания проекта.

Загружаем проект на GitHub

У вас уже наверняка есть свой репозиторий на проекте и вы будете выгружать все ваши тесты в этот репозиторий. Для тестового сценария в рамках статьи я создам свой. Всё что в нём есть это 2 файла, коллекция и переменные окружения в папке tests

-2

Копируем URL данного репозитория. Он нам пригодится в дальнейшем

-3

Ваш репозиторий должен быть публичным, чтобы не усложнять настройки TeamCity!

Настройка проекта Postman в TeamCity

Создам с нуля новый проект, чтобы было понятно, где, куда и зачем.

Придумываем любое название проекту

-4

Создаём новый билд

-5

Также придумываем название

-6

Для VCS Root будем использовать ссылку нашего репозитория из GitHub.

-7

refs/heads/main - указываем нужную ветку в вашем git, их может быть несколько

Авторизация по логину и паролю, все остальные настройки оставьте по умолчанию. Настройка завершена

-8

-9

Далее перейдём в настройки нашего проекта

-10

Далее Report Tabs и создаём таблицу, где будет отображаться наш отчёт после теста

-11

Название должно совпадать с тем, которое вы прописываете в запуске тестов!

Теперь перейдём в настройки нашего билда и в General Settings указываем тот же файл с отчётом

-12

Настройка Агента в TeamCity

Мы будем запускать тесты прямо через Docker-контейнер, поскольку это делает нас независимыми от настроек на агенте. Для тестового облачного агента нет возможности установить собственные контейнеры, это можно сделать только через TeamCity, к агенту которого у вас есть доступ.

Перейдём во вкладку агенты и нажмём на командную строку.

-13

Я установил свой ПК в качестве агента. Это не сложно сделать следуя по шагам из инструкции.

-14

Рабочая область располагается по адресу -C:\Windows\system32\config\systemprofile. Она нам нужна, чтобы проще установить контейнер через Dockerfile.

Мы уже умеем создавать такой файл из статьи

Поэтому просто берём и копируем его по нужному адресу.

После в терминале TeamCity устанавливаем наш контейнер

docker build -t postman .

Проверим созданный контейнер

-15

С настройкой агента закончили!

Настройка запуска тестов Newman

Создаём новый шаг в сборке. Выбираем Command Line

-16

Наш код запуска тестов через докер выглядит так

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 на хост. В моём случае это папка на моём ПК.
-17
  • И уже отсюда запускаются наши тесты
  • Так как у нас запуск через контейнер - нам нужно скопировать эти файлы в контейнер 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

-18
  • Этот путь как раз и будет равен %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"

Как видим тесты прошли успешно.

-19

В нашем проекте создалась новая таблица

-20

Здесь будет храниться ваш отчёт о тестировании, которым могут воспользоваться все члены команды!

-21

Настройка запуска тестов Newman с количеством упавших тестов

Сейчас у нас настроен запуск для тестов postman. Для Teamcity это обычный запуск с командной строки, если все тесты прошли успешно будет success, если хотя бы один упадёт, то будет field.

-22

Для всех членов команды это не очень информативно, поэтому мы можем добавить небольшую настройку.

Как помним в нашем 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

-23

После этого немного изменим строку запуска

-24
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"

После запуска тестов будет детальная статистка упавших и пройденных тестов

-25

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

-26

Я постарался максимально подробно описать все необходимые шаги. В зависимости от проекта они могут немного отличаться, так как условия запуска и параметры могут быть разными. Но общий принцип остаётся неизменным: загружаем тесты в репозиторий проекта и запускаем их через контейнер Docker.

Расскажите в комментариях, получилось ли у вас и с какими трудностями вы столкнулись.

Вы можете сохранить себе коллекцию по данному разделу - https://api.postman.com/collections/14548453-df841372-4131-42a1-9884-ff45954e298a?access_key=PMAT-01H21BHXSV6P93H93JRD62Q98X

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

Обучение тестированию