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

  • 25 декабря, 14:51
  • 5149
  • 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 комментариев
Сортировка:
Добавить комментарий