Мы с вами уже научились эффективно использовать Postman и даже освоили написание автоматизированных тестов, включая детальное создание скриптов до и после теста. Однако, чтобы эффективно интегрировать эти тесты в процесс непрерывной интеграции (CI), необходимо научиться запускать их удалённо. Именно об этом и пойдёт речь в нашей сегодняшней статье — мы рассмотрим запуск тестов через контейнер в Docker.
В этой статье я не буду касаться установки и использования Docker. Этому будет посвящён отдельный курс. Если говорить кратко, Docker позволяет нам создать изолированную среду («контейнер»), в которой можно запустить определённую программу или операционную систему. Например, можно запустить Python, не устанавливая его на свой компьютер.
То же самое можно сделать и с тестами: мы создадим контейнер, в котором они будут выполняться, а мы получим только результаты. Поскольку контейнеры используются на серверах и агентах проекта, ресурсы вашего компьютера задействованы не будут. Это очень удобно!
В этой статье я расскажу о последовательности действий, необходимых для запуска тестов в контейнере Docker, не вдаваясь в подробности установки и использования Docker.
Использование Docker локально
Для начала вам нужно установить образ в ваш Docker. Вы можете использовать тот, который больше подойдёт именно вам. Перейдя на страницу - https://hub.docker.com/
Я же буду использовать - ventx/newman-reporter. Так как в нём уже есть установленный отчёт --reporters htmlextra
Откроем нашу командную строку и пропишем
docker pull ventx/newman-reporter
Произойдёт установка выбранного образа
Можете перейти в сам Docker и убедиться, что образ установился
Сейчас нам нужно запустить наш образ. Запустим сразу с командой выполнения тестов. Сначала попробуем с помощью ссылки коллекции, которую мы использовали в этой статье
newman run https://api.postman.com/collections/14548453-df841372-4131-42a1-9884-ff45954e298a?access_key=PMAT-01H21BHXSV6P93H93JRD62Q98X --environment env.json --insecure --reporters cli,htmlextra --reporter-htmlextra-export "new_report.html"
Но, из этой же статьи помним, что лучше запускать с переменными окружения. Поэтому перейдём на рабочий стол, где лежит наш файл env
Запуск тестов Newman через Docker
Логика следующая:
- Запускаем контейнер
- Копируем наш файл с переменными окружения в контейнер
- Далее точно такой же запуск, как и без Docker
docker run –-rm -v %cd%:/etc/newman/ ventx/newman-reporter run https://api.postman.com/collections/14548453-df841372-4131-42a1-9884-ff45954e298a?access_key=PMAT-01H21BHXSV6P93H93JRD62Q98X --environment env.json --insecure --reporters cli,htmlextra --reporter-htmlextra-export "new_report.html"
–-rm - удаление контейнера после его запуска. Он нам по факту не нужен.
-v %cd%:/etc/newman/ - %cd% это указание, что мы будем использовать файл в текущей директории. /etc/newman/ - куда клонировать текущую дерикторию
ventx/newman-reporter - название образа, который хотим запустить
Остальные команды вы уже знаете из предыдущих статей. Запустили - тесты прошли успешно
Мы также сформировали отчет по тестам
Можем проверить запущенные контейнеры. Их не будет - так как мы его сразу удаляем
Запустим наши тесты через файл, а не через ссылку. теперь не будем удалять контейнер, чтобы наглядно посмотреть, что в нём находится. Команда следующая
docker run -v %cd%:/etc/newman/ ventx/newman-reporter run dzen.json --environment env.json --insecure --reporters cli,htmlextra --reporter-htmlextra-export "new_report.html"
Напомню, файлы находятся как раз из той директории, которая указана в командной строке, то есть на рабочем столе (Desktop)
Тесты прошли также успешно
Можем перейти в наш контейнер и посмотреть на структуру
Вы можете сохранить себе коллекцию по данному разделу - https://api.postman.com/collections/14548453-df841372-4131-42a1-9884-ff45954e298a?access_key=PMAT-01H21BHXSV6P93H93JRD62Q98X
Если у вас есть вопросы или вы просто хотите стать частью команды тестировщиков, то переходи в ТГ канал, где можем пообщаться с единомышленниками и найти много интересных и полезных знаний!Также если вам нужна индивидуальная консультация, менторство и помощь в создании проекта пишите в ТГ канал!