🏠 | 💻 IT | Оглавление |

Тестирование API Урок 7

PUT с параметрами

Продолжаем усложнять работу с /api/multiply_two/ чтобы в будущем не бояться «сложных» конструкций.

Теперь умножать можно не только с помощью POST но и через PUT:

Base URL: 'http://www.answerit.ru' … 5. Resource: /api/multiply_two/ Method: GET Response: 200 OK This endpoint allows to multiply numbers. Use POST method to send two numbers factor_1 and factor_2 of type int or float. format request body as JSON. Response will include info about their product. Method: PUT Parameters: factor_1,factor_2 : float Responses: 200 OK application/json { "Success":"Product of %factor_1% and %factor_2% is %product%" } where %product% = %factor_1% * %factor_2% 412 Precondition Failed if factor_% is not integer or float application/json { "Error 412":"factor_% is not a number" } Method: POST Body: { "factor_1" : float, "factor_2" : float } Responses: 200 OK application/json { "Success":"Product of %factor_1% and %factor_2% is %product%" } where %product% = %factor_1% * %factor_2% …

Что нового в документации:

У /api/multiply_two/ появился третий поддерживаемый метод

В предыдущем уроке можно было оправлять GET для получения справочной информации и POST с телом в формате JSON для умножения

В текущей версии можно оправить ещё и PUT, причём с двумя параметрами.

В третьем уроке Вы уже передавали с помощью PUT чило, прямо в URL. В SOAP UI это означает, что Вы вводили его в поле Resource.

Сейчас Вы сможете изучить новый способ передачи данных.

Как обычно нужно добавить на адрес /api/multiply_two/ ещё один метод с помощью New Method Теперь наш проект выглядит следующим оригинальным образом:

Пример тестирования API изображение с сайта www.andreyolegovich.ru

Выбираем только что созданный Request с методом PUT

Кликаем в окошко Parameters справа вверху.

Пример тестирования API изображение с сайта www.andreyolegovich.ru

Должно появиться отдельное окно для ввода параметров.

Нужно нажать на зелёный плюс.

Пример тестирования API изображение с сайта www.andreyolegovich.ru

Должно появиться два поля для ввода параметров и их значений.

Пример тестирования API изображение с сайта www.andreyolegovich.ru

В поле Name введите factor_1 в поле Value введите 7.5

Нажмите плюс ещё раз и введите factor_2 со значением 3.3

Нажмите Enter или просто закройте это окно

Пример тестирования API изображение с сайта www.andreyolegovich.ru

Обратите внимание на поле Parameters. Там теперь появилась запись

?factor_1=7.5&factor_2=3.3

Именно в таком виде запрос и будет отправлен. Если бы Вы сейчас пользовались каким-то другим интсрументом а не SOAP UI возможно, Вы бы могли просто приписать эти значения к URL не забывая поставить знак вопроса.

Закрывайте окно с параметрами, если Вы этого ещё не сделали и отправляйте запрос.

Пример тестирования API изображение с сайта www.andreyolegovich.ru

Проверили, что пришёл ответ 200 OK с телом в формате JSON

{"Success": "Product of 7.5 and 3.3 is 24.75"}

Теперь протестируем на обработку неправильного ввода.

В спецификации было написано, что разработчик предусмотрел это и возвращает ошибку 412.
( посмотреть спецификацю )

Снова кликаем на Parameters и редактируем factor_1.

Пусть теперь он будет набором букв.

Пример тестирования API изображение с сайта www.andreyolegovich.ru

Отправляем запрос и видим, что обработка прошла успешно. Сервер понял, что мы прислали не число и вернул 412 с предупреждением в формате JSON.

{"Error 412": "factor_1 is not a number"}

Пример тестирования API изображение с сайта www.andreyolegovich.ru

Теперь сделаем наоборот: значение factor_1 сделаем снова числом а значение factor_2 набором букв и отправим запрос.

Пример тестирования API изображение с сайта www.andreyolegovich.ru

И здесь мы видим явный баг.

HTTP/1.1 500 INTERNAL SERVER ERROR Server: nginx-reuseport/1.13.4 Date: Fri, 05 Jun 2020 09:57:59 GMT Content-Type: text/html; charset=utf-8 Content-Length: 290 Connection: keep-alive Keep-Alive: timeout=30 X-Powered-By: Phusion Passenger 4.0.60 Status: 500 INTERNAL SERVER ERROR <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"> <title>500 Internal Server Error</title> <h1>Internal Server Error</h1> <p>The server encountered an internal error and was unable to complete your request. Either the server is overloaded or there is an error in the application.</p>

Разработчик проверил factor_1 но забыл сделать то же самое с factor_2

В качестве управжнения напишите письмо разработчику с отчётом о найденном баге и выложите его в комментариях.

Итоги

В этом уроке Вы убедились, что на один адрес можно повесить сразу три метода.

Основная ценность урока - работа с параметрами. Теперь Вы знаете что после ? в сслыке идёт не что-то секретное, а вполне конкретные данные, которые Вы теперь сами можете создавать в SOAP UI в будущем Вы освоите и другие способы, например с помощью Python , но пока что главное понимать, что это возможно и уметь пользоваться хотя бы одним инструментом.

В следующем уроке мы проанализируем спецификацию к API которая разрослась довольно обширно и попробуем внести улучшения на основе имеющихся знаний.

Помните, что Ваши отзывы помогают мне выбрать правильное направление. Пишите в комментариях елси что-то получилось или не получилось.

Большая просьба - не посылайте слишком много запросов. Я не уверен какую нагрузку выдержит сайт на моём тарифе.

Если остались вопросы - смело задавайте их в комментариях.

Поиск по сайту

Контакты и сотрудничество:
Рекомендую наш хостинг beget.ru
Пишите на info@urn.su если Вы:
1. Хотите написать статью для нашего сайта или перевести статью на свой родной язык.
2. Хотите разместить на сайте рекламу, подходящуюю по тематике.
3. Реклама на моём сайте имеет максимальный уровень цензуры. Если Вы увидели рекламный блок недопустимый для просмотра детьми школьного возраста, вызывающий шок или вводящий в заблуждение - пожалуйста свяжитесь с нами по электронной почте
4. Нашли на сайте ошибку, неточности, баг и т.д. ... .......
5. Статьи можно расшарить в соцсетях, нажав на иконку сети: