WireMock для QA: от ручных проверок до автотестов

от автора

Бывали ли у вас ситуации, когда для тестирования нужен сервис, а он ещё не готов, нестабилен или доступ к нему ограничен? В такие моменты на помощь приходят стабы и моки. Один из самых удобных инструментов для этого — WireMock. Он позволяет легко эмулировать работу backend-сервисов, подменяя реальные ответы на заранее подготовленные.

В этой статье я расскажу, как запустить wiremock-standalone.jar, и покажу, почему этот инструмент одинаково полезен как мануальным тестировщикам, так и автоматизаторам.

Содержание

Что такое WireMock и зачем он нужен

WireMock — это мощный инструмент для создания стабов и моков, который позволяет эмулировать HTTP API. Он особенно полезен в ситуациях, когда:

  • Backend-сервис ещё не готов или находится в разработке.

  • Доступ к реальному API ограничен или платный.

  • Вам нужно протестировать различные сценарии (успех, ошибка, пустой ответ) без изменения данных на реальном сервере.

Где взять WireMock

Вы можете скачать WireMock в виде JAR-файла, который сразу готов к запуску. Есть два основных варианта, и важно понимать разницу между ними.

1. WireMock Standalone (fat JAR)
Это «толстая» версия, которая включает в себя все необходимые зависимости. Она идеально подходит для мануального тестирования и быстрых проверок, так как вам не нужно ничего настраивать. Просто скачайте файл и запустите его.

2. WireMock (обычный JAR)
Это «тонкая» версия, которая используется как библиотека в проектах. Она не содержит зависимостей, поэтому её обычно подключают через менеджеры зависимостей, такие как Maven или Gradle. Этот вариант подходит для автоматизации и интеграции в тестовые фреймворки.

Полезные ссылки:

Запуск WireMock в «ручном» (standalone) режиме

Для запуска wiremock-standalone.jar вам потребуется только Java 11 или выше.

1. Проверка версии Java:
Откройте терминал или командную строку и выполните команду:

java -version 

Если Java не установлена, скачайте JDK с официального сайта Oracle или OpenJDK.

2. Запуск сервера:
Скачайте файл wiremock-standalone-3.13.1.jar и запустите его с помощью команды:

java -jar wiremock-standalone-3.13.1.jar --port 8080 

После запуска в консоли появятся сообщения о старте сервера. Теперь WireMock доступен по адресу http://localhost:8080.

Основные параметры запуска:

  • --port <номер>: Указать порт (по умолчанию 8080).

  • --verbose: Включить подробный лог работы.

  • --root-dir <путь>: Указать папку, где будут храниться стабы и ответы.

  • --record-mappings: Включить режим записи, чтобы WireMock сохранял все запросы и ответы в JSON-файлы.

Админ-интерфейс WireMock

WireMock работает как два сервиса одновременно:
1.  Эмулятор API: Отдаёт ответы на запросы.
2.  Админ-сервер: Позволяет управлять стабами в реальном времени.

Основные эндпоинты администратора:

  • http://localhost:8080/__admin/mappings — показывает все загруженные стабы.

  • http://localhost:8080/__admin/requests — список всех запросов, которые получил WireMock.

  • http://localhost:8080/__admin/ — корневой путь для админских команд (например, добавление или удаление стаба через POST/DELETE).

WireMock для мануального тестирования

Одно из самых полезных применений WireMock для QA — создание простых стабов вручную. Это позволяет тестировщикам проверять работу frontend или мобильного приложения без доступного backend.

Папки mappings и __files

WireMock хранит стабы в папке mappings. Каждый стаб — это отдельный JSON-файл, который описывает:

  • URL, на который нужно реагировать.

  • HTTP-метод (GET, POST и т.д.).

  • Ответ, который возвращает сервер.

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

Пример простого GET-эндпоинта:
Создадим файл mappings/get-hello.json:

{   "request": {     "method": "GET",     "url": "/hello"   },   "response": {     "status": 200,     "body": "Привет от WireMock!",     "headers": {       "Content-Type": "text/plain"     }   } } 

После запуска WireMock запрос к http://localhost:8080/hello вернёт Привет от WireMock!.

WireMock для автоматизации

WireMock можно интегрировать прямо в автотесты на Java, чтобы создавать динамические стабы и использовать их в интеграционных или E2E тестах.
Пример интеграции с JUnit 5:

import com.github.tomakehurst.wiremock.WireMockServer; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.Test; import static com.github.tomakehurst.wiremock.client.WireMock.*;  public class WireMockExampleTest {     private static WireMockServer wireMockServer;      @BeforeAll     public static void setup() {         wireMockServer = new WireMockServer(8080);         wireMockServer.start();         configureFor("localhost", 8080);         stubFor(get(urlEqualTo("/hello"))             .willReturn(aResponse()                 .withStatus(200)                 .withBody("Привет от WireMock!")));     }      @Test     public void testHelloEndpoint() {         // Здесь выполняем HTTP-запрос к WireMock и проверяем результат     }     @AfterAll     public static void teardown() {         wireMockServer.stop();     } } 

Практические кейсы использования WireMock

WireMock полезен в реальных QA-сценариях. Вот несколько типичных кейсов:
 — Тестирование, когда сервис недоступен: Продолжайте тестирование, используя моки, пока backend-сервис ещё в разработке.
 — Проверка обработки ошибок: Эмулируйте различные HTTP-статусы (400, 500) и проверяйте, как приложение реагирует на них.
 — Изоляция микросервисов: Тестируйте один сервис, заменяя другие зависимости стабами. Это делает тесты более стабильными и быстрыми.

Заключение

WireMock — это универсальный инструмент для тестировщиков, который одинаково полезен как мануальным, так и автоматизированным QA. Он позволяет быстро создавать стабы, изолировать сервисы и тестировать приложения, когда реальный backend ещё не готов или недоступен.

Преимущества:
 — Быстро подставляет ответы вместо реального сервиса.
 — Работает как standalone (без сборки проекта).
 — Легко интегрируется в автотесты на Java, JUnit, TestNG.
 — Идеален для изоляции микросервисов.


ссылка на оригинал статьи https://habr.com/ru/articles/945740/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *