Простое тестирование API REST в Python с помощью pyhttptest

  • 25 декабря, 12:51
  • 9601
  • 0

Каждый программист сталкивается с API REST, разрабатывая какой-либо сервис. Кроме того, уже настала эра микросервисов, где мы разделяем функционал приложения на небольшие отдельные сервисы, независимые друг от друга. В основном эти сервисы следуют принципам RESTful и используют для связи формат JSON, который стал наиболее широко используемым форматом из-за его простоты.

pyhttptest - инструмент командной строки для HTTP-тестов через API-интерфейсы RESTful 

Этот инструмент автоматизирует тестирование в три простых шага.

1. Установите пакет

pip install pyhttptest

2. Опишите ваши тестовые примеры HTTP-запросов для службы API в формате JSON в файле.

Примеры определения одного теста 

  • Чтобы отправить запрос HTTP GET

Создайте файл JSON, например, data / test_server_status.json

{   "name": "TEST: Get server status",   "verb": "GET",   "endpoint": "/get",   "host": "https://httpbin.org",   "headers": {     "Accept-Language": "en-US"   } }

  • Чтобы отправить HTTP-запрос POST

Создайте файл JSON, например, data / test_create_html_bin.json

{   "name": "TEST: Create an HTML bin",   "verb": "POST",   "endpoint": "post",   "host": "https://httpbin.org",   "payload": {     "content": "Hello, world!"   } }

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

Создайте файл JSON, например, data/requests.json 

[   {     "name": "TEST: List all users",     "verb": "GET",     "endpoint": "api/v1/users",     "host": "http://localhost:8085/",     "headers": {       "Accept-Language": "en-US"     },     "query_string": {       "limit": 1     }   },   {     "name": "TEST: Add a new user",     "verb": "POST",     "endpoint": "api/v1/users",     "host": "http://localhost:8085/",     "payload": {       "username": "pyhttptest",       "email": "admin@pyhttptest.com"     }   },   {     "name": "TEST: Modify an existing user",     "verb": "PUT",     "endpoint": "api/v1/users/XeEsscGqweEttXsgY",     "host": "http://localhost:8085/",     "payload": {       "username": "pyhttptest"     }   },   {     "name": "TEST: Delete an existing user",     "verb": "DELETE",     "endpoint": "api/v1/users/XeEsscGqweEttXsgY",     "host": "http://localhost:8085/"   } ]

3. Запустите команду и получите отчет

pyhttptest execute data/test_server_status.json

Отчет из одиночного теста

Простое тестирование API REST в Python с помощью pyhttptest

pyhttptest execute data/requests.json

Отчет из нескольких тестовых случаев

Простое тестирование API REST в Python с помощью pyhttptest

Свойства, которые вы можете передать .json файлу :

  1. name - название тестового примера
  2. verb  - метод HTTP.
  3. endpoint  - ресурс, который вы хотите вызвать на сервере.
  4. host - адрес хоста сервера.
  5. headers - HTTP-заголовки. Все поля заголовка HTTP поддерживаются.
  6. query_string - запрашивает строковые параметры в URL после знака вопроса.
  7. payload  - данные.

У вас может возникнуть один вопрос: как добавить, структурировать и организовать тестовые примеры в существующий/новый проект. Каждый проект Python, у которого есть тесты, содержит в своем каталоге проекта папку, а именно tests/

Из этого каталога по соглашению, такие большие фреймворки, как unittest и pytest обнаруживают и выполняют определенные тестовые примеры в скриптах Python. Чтобы не связываться с этими тестами и не нарушать соглашения, создайте новый каталог в корневом каталоге вашего проекта с именем live_tests/

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


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

IT Новости

Смотреть все