Тестирование 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.