В настоящее время каждый из нас сталкивается с REST API, разрабатывая или используя такие сервисы. Кроме того, мы живем в эру микросервисов, где мы разделяем нашу бизнес-логику на небольшие отдельные сервисы, независимые от каждого. В основном эти сервисы следуют принципам RESTful и используют для связи формат JSON, который стал наиболее широко используемым из-за своей простоты.
pyhttptest — инструмент командной строки для HTTP-тестов через API-интерфейсы RESTful
Благодаря этой утилите можно автоматизировать тестирование в три простых шага.
1. Установка пакета
pip install pyhttptest
2. Опишите ваши тест-кейсы HTTP-запросов для вашей службы API в простейшем и широко используемом формате JSON, записав их в файл.
Примеры определения тест-кейса
{
"name": "TEST: Get server status",
"verb": "GET",
"endpoint": "/get",
"host": "https://httpbin.org",
"headers": {
"Accept-Language": "en-US"
}
} {
"name": "TEST: Create an HTML bin",
"verb": "POST",
"endpoint": "post",
"host": "https://httpbin.org",
"payload": {
"content": "Hello, world!"
}
} Пример определения множественных тестов
[
{
"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 файле таковы:
Best practices
У вас может возникнуть один вопрос: как добавлять, структурировать и организовывать тестовые примеры в мой существующий/новый проект. Каждый проект Python, в котором есть тесты, содержит в своем каталоге проектов папку, которая называется tests/.
По соглашению, из этого каталога лучшие фреймворки, такие как unittest и pytest, ищут и выполненяют определенные тест-кейсы в скриптах Python. Чтобы не связываться с этими тестами и не нарушать соглашения, мы предлагаем создать новый каталог в корневом каталоге вашего проекта с именем live_tests/.
Внутри нового каталога вы можете поместить все файлы .json с определенными тестовыми примерами для API. Благодаря этому ваши тесты будут легко различимы. Но это зависит только от вас!
Если вы ищете работу на Python, на Talanto.work сейчас есть варианты для junior, middle, senior…
Рынок Python-вакансий большой, но удобным его назвать сложно. Формально вакансий много, однако в реальном поиске…
Срезы в Python — это больше, чем a[2:7]. В статье — быстрый разбор полезных приёмов:…
В этой статье мы рассмотрим возведение в степень в Python с помощью различных методов, от…
Дубликаты в списке Python — частая проблема. В статье показано, как быстро убрать повторы, в…
Услуга виртуального хостинга на SpaceWeb позволяет арендовать часть сервера (shared-сервера) и разместить на нём свой…