Тестирование API Урок 8
PUT с параметрами
Подведём небольшой итог первых семи уроков.
У нас есть документация к API для пяти различных endpoint сайта
answerit.ru
Предлагаю открыть её в отдельной вкладке, нажимайте
сюда
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
В качестве управжнения напишите письмо разработчику с отчётом о найденном баге и выложите его в комментариях.
Большая просьба - не посылайте слишком много запросов. Я не уверен какую нагрузку выдержит сайт на моём тарифе.