Тестирование REST API с помощью Upssert

Введение в платформу утверждений Upssert API с открытым исходным кодом

Первоначально появилось на https://tyronetudehope.com.

Upssert — это результат необходимости мониторинга времени безотказной работы API и желания упростить тестовые примеры. Он был вдохновлен предельной легкостью использования и простотой таких инструментов, как Ansible и Terraform.

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

Во-первых, нам нужно установить Upssert:

$ npm install upssert

Upssert — это утилита javascript, но, поскольку определения набора тестов определены как JSON, ее можно использовать на полную мощность без написания кода.

Самое простое утверждение - это пинг. Мы можем запустить проверку связи с конечной точкой /get httpbin:

$ upssert --url https://httpbin.org/get
Executing 1 test suites (2 assertions)…
Ping
  ✓ https://httpbin.org/get
1 passing (405.000ms)

Теперь мы почти уверены, что httpbin находится в сети! Флаг --url просто генерирует для вас набор тестов по умолчанию:

Это подтверждает, что код ответа сервера находится либо в диапазоне успеха, либо в диапазоне перенаправления.

Но мы не всегда хотим просто знать, что код состояния в порядке. Например, нам может понадобиться проверить, что URL-адрес, который возвращает код состояния 302, на самом деле возвращает правильный заголовок Location:

$ upssert redirect.json
Executing 1 test suites (3 assertions)…
Httpbin.org
  ✓ /redirect
1 passing (411.000ms)

Здесь мы утверждали, что код состояния — 302, заголовок Content-Type — HTML и что существует заголовок Location со значением /get.

Интересная особенность: если тип контента application/json, Upssert проанализирует тело (спасибо, JSON.parse!), и разрешит утверждения для результирующего объекта:

Для этого тестового примера мы могли бы использовать репортер TAP:

$ upssert foobar.json --reporter tap
1..1
ok 1 /foobar
# tests 1
# pass 1
# fail 0
# assertions 2

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