Каждый программист сталкивается с 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
Отчет из одиночного теста
pyhttptest execute data/requests.json
Отчет из нескольких тестовых случаев
Свойства, которые вы можете передать .json файлу :
- name - название тестового примера
- verb - метод HTTP.
- endpoint - ресурс, который вы хотите вызвать на сервере.
- host - адрес хоста сервера.
- headers - HTTP-заголовки. Все поля заголовка HTTP поддерживаются.
- query_string - запрашивает строковые параметры в URL после знака вопроса.
- payload - данные.
У вас может возникнуть один вопрос: как добавить, структурировать и организовать тестовые примеры в существующий/новый проект. Каждый проект Python, у которого есть тесты, содержит в своем каталоге проекта папку, а именно tests/
Из этого каталога по соглашению, такие большие фреймворки, как unittest и pytest обнаруживают и выполняют определенные тестовые примеры в скриптах Python. Чтобы не связываться с этими тестами и не нарушать соглашения, создайте новый каталог в корневом каталоге вашего проекта с именем live_tests/
Внутри нового каталога вы можете поместить все .json файлы с определенными тестовыми примерами для API. Благодаря этому ваши тесты будут легко различимы.
0 комментариев
Добавить комментарий