Тестирование API Урок 7
PUT с параметрами
Продолжаем усложнять работу с /flaskapi/api/multiply_two/
чтобы в будущем не бояться «сложных» конструкций.
Теперь умножать можно не только с помощью POST но и через PUT:
Base URL: 'http://www.answerit.ru' … 5. Resource: /flaskapi/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% …
Что нового в документации:
У /flaskapi/api/multiply_two/ появился третий поддерживаемый метод
В предыдущем уроке можно было оправлять GET для получения справочной информации и POST
с телом в формате JSON для умножения
В текущей версии можно оправить ещё и PUT, причём с двумя параметрами.
В
третьем уроке
Вы уже передавали с помощью PUT чило, прямо в URL. В SOAP UI это означает, что Вы вводили
его в поле Resource.
Сейчас Вы сможете изучить новый способ передачи данных.
Как обычно нужно добавить на адрес /flaskapi/api/multiply_two/ ещё один метод с помощью New Method Теперь наш проект выглядит следующим оригинальным образом:
Выбираем только что созданный Request с методом PUT
Кликаем в окошко Parameters справа вверху.
Должно появиться отдельное окно для ввода параметров.
Нужно нажать на зелёный плюс.
Должно появиться два поля для ввода параметров и их значений.
В поле Name введите factor_1 в поле Value введите 7.5
Нажмите плюс ещё раз и введите factor_2 со значением 3.3
Нажмите Enter или просто закройте это окно
Обратите внимание на поле Parameters. Там теперь появилась запись
?factor_1=7.5&factor_2=3.3
Именно в таком виде запрос и будет отправлен. Если бы Вы сейчас пользовались каким-то другим интсрументом а не SOAP UI возможно, Вы бы могли просто приписать эти значения к URL не забывая поставить знак вопроса.
Закрывайте окно с параметрами, если Вы этого ещё не сделали и отправляйте запрос.
Проверили, что пришёл ответ 200 OK с телом в формате JSON
{"Success": "Product of 7.5 and 3.3 is 24.75"}
Теперь протестируем на обработку неправильного ввода.
В спецификации было написано, что разработчик предусмотрел это и возвращает ошибку
412.
посмотреть спецификацю
Снова кликаем на Parameters и редактируем factor_1.
Пусть теперь он будет набором букв.
Отправляем запрос и видим, что обработка прошла успешно. Сервер понял, что мы прислали не число и вернул 412 с предупреждением в формате JSON.
{"Error 412": "factor_1 is not a number"}
Теперь сделаем наоборот: значение factor_1 сделаем снова числом а значение factor_2 набором букв и отправим запрос.
И здесь мы видим явный баг.
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 которая разрослась
довольно обширно и попробуем внести улучшения на основе имеющихся знаний.
Помните, что Ваши отзывы помогают мне выбрать правильное направление. Пишите
в комментариях елси что-то получилось или не получилось.
Большая просьба - не посылайте слишком много запросов. Я не уверен какую нагрузку выдержит сайт на моём тарифе.