[API, Тестирование веб-сервисов] API для генерации ответов сервера с любыми кодами статусов
Автор
Сообщение
news_bot ®
Стаж: 6 лет 9 месяцев
Сообщений: 27286
Привет, Хабр! Работая над библиотекой-обёрткой REST API, я столкнулся с проблемой. Для тестирования обработки ошибочных кодов ответа сервера (400, 500, 403 и т.д.) необходимо искусственно создавать условия на сервере для получения соответствующих кодов. При правильно настроенном сервере, например, непросто получить ошибку 500. А тестировать функции-обработчики ошибок как-то надо. Я написал небольшое API, которое генерирует ошибочные ответы сервера — httpme.tk
Как применять в тестировании?
Например, есть такой код (python3):
from requests import session as requests_session
session = requests_session()
session.hooks = {
'response': lambda r, *args, **kwargs: raise AccessError('Доступ закрыт, т.к. сервер подключен к другой БД') if r.status_code == 403 else pass
}
class AccessError(Exception):
""" 'своя' ошибка """
pass
def getter(url):
return session.get(url)
Если кратко — в коде есть функция, которая возвращает ответ сервера на GET-запрос на заданный URL, если в результате выполнения запроса возникает ошибка 403 — вызывается внутреннее исключение модуля AccessError.
Этот код надо протестировать и отладить. Cоздать вручную условия для ошибки 403, а уж тем более, например, 500 (сервер слишком хорошо работает) довольно непросто. Тестировщику не важно, при каких условиях сервер выдаст ошибку 403: он тестирует не само API (например), а функцию, которая к нему обращается. Поэтому для тестирования вызова исключения при коде статуса 403 он может сделать вот так (python3 + pytest):
import pytest
from mymodule import
def test_forbidden():
with pytest.raises(AccessError):
getter('http://httpme.tk/403')
Как пользоваться?
Очень просто. Отправьте на сервер GET-запрос в формате http://httpme.tk/<status_code>. Например так (cURL):
curl -G http://httpme.tk/500
Или так (python3):
from requests import get
get('http://httpme.tk/408') # <Response [408]>
А что внутри?
А внутри маленькое Flask-приложение, вызывающее функцию abort(status_code) на каждый запрос.
→ Ссылка на GitHub
На этом всё!
Интересно услышать оценку полезности данного сервиса сообществом.
===========
Источник:
habr.com
===========
Похожие новости:
- [API, JavaScript, VueJS, Учебный процесс в IT] Онлайн-митап сообщества разработчиков MSK VUE.JS
- [Amazon Web Services, Angular, Облачные сервисы, Хостинг, Яндекс API] Как разместить статический сайт с помощью Yandex.Cloud Object Storage
- [Бизнес-модели, Клиентская оптимизация, Социальные сети и сообщества, Тестирование веб-сервисов, Тестирование мобильных приложений] Предприниматели России предпочитают цифровые решения для привлечения клиентов
- [DevOps, Отладка, Тестирование IT-систем, Тестирование веб-сервисов] Отслеживание ошибок в приложении React с помощью Sentry (перевод)
- [Open source, Программирование, Python, Социальные сети и сообщества] Spothiefy: как переехать из Яндекс.Музыки быстро, бесплатно
- В Chrome экспериментируют с прекращением автозаполнения форм, отправляемых без шифрования
- [Финансы в IT] Истории с Уолл-стрит: как компания с нулевой выручкой может оцениваться в $34 млрд, а ее акции показывать взрывной рост
- [Карьера в IT-индустрии, Тестирование IT-систем, Тестирование веб-сервисов, Тестирование мобильных приложений, Учебный процесс в IT] «Подготовка к собеседованию QA» starter pack или самая большая шпаргалка вопросов-ответов по тестированию
- [Python] Погода-бот: DialogFlow + OpenWeather + Python
- [Python] Создание Discord-бота на Python. Часть 1
Теги для поиска: #_api, #_testirovanie_vebservisov (Тестирование веб-сервисов), #_api, #_flask, #_httpzapros (http-запрос), #_http, #_api, #_testirovanie_vebservisov (
Тестирование веб-сервисов
)
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 23-Ноя 00:42
Часовой пояс: UTC + 5
Автор | Сообщение |
---|---|
news_bot ®
Стаж: 6 лет 9 месяцев |
|
Привет, Хабр! Работая над библиотекой-обёрткой REST API, я столкнулся с проблемой. Для тестирования обработки ошибочных кодов ответа сервера (400, 500, 403 и т.д.) необходимо искусственно создавать условия на сервере для получения соответствующих кодов. При правильно настроенном сервере, например, непросто получить ошибку 500. А тестировать функции-обработчики ошибок как-то надо. Я написал небольшое API, которое генерирует ошибочные ответы сервера — httpme.tk Как применять в тестировании? Например, есть такой код (python3): from requests import session as requests_session
session = requests_session() session.hooks = { 'response': lambda r, *args, **kwargs: raise AccessError('Доступ закрыт, т.к. сервер подключен к другой БД') if r.status_code == 403 else pass } class AccessError(Exception): """ 'своя' ошибка """ pass def getter(url): return session.get(url) Если кратко — в коде есть функция, которая возвращает ответ сервера на GET-запрос на заданный URL, если в результате выполнения запроса возникает ошибка 403 — вызывается внутреннее исключение модуля AccessError. Этот код надо протестировать и отладить. Cоздать вручную условия для ошибки 403, а уж тем более, например, 500 (сервер слишком хорошо работает) довольно непросто. Тестировщику не важно, при каких условиях сервер выдаст ошибку 403: он тестирует не само API (например), а функцию, которая к нему обращается. Поэтому для тестирования вызова исключения при коде статуса 403 он может сделать вот так (python3 + pytest): import pytest
from mymodule import def test_forbidden(): with pytest.raises(AccessError): getter('http://httpme.tk/403') Как пользоваться? Очень просто. Отправьте на сервер GET-запрос в формате http://httpme.tk/<status_code>. Например так (cURL): curl -G http://httpme.tk/500
Или так (python3): from requests import get
get('http://httpme.tk/408') # <Response [408]> А что внутри? А внутри маленькое Flask-приложение, вызывающее функцию abort(status_code) на каждый запрос. → Ссылка на GitHub На этом всё! Интересно услышать оценку полезности данного сервиса сообществом. =========== Источник: habr.com =========== Похожие новости:
Тестирование веб-сервисов ) |
|
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 23-Ноя 00:42
Часовой пояс: UTC + 5