0 / 0 / 0
Регистрация: 03.09.2020
Сообщений: 20

Автотест на тестирование эндпоинта [GET]

28.01.2021, 07:55. Показов 6815. Ответов 15
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем привет.
Помогите решить задачу, с таким ниразу не сталкивался. Или ткните где есть примеры.

Зайди на www.reqres.in и напиши автотест на тестирование эндпоинта [GET] SINGLE USER (reqres.in/api/single_user).
Должна осуществляться проверка, что сервер возвращает статус 200 и first_name = "Janet" (опционально)
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
28.01.2021, 07:55
Ответы с готовыми решениями:

Инициализация эндпоинта в @RestController из БД?
@RestController public class WebHookController { @RequestMapping(value = "/", method = RequestMethod.POST) public...

Правильный REST URL для эндпоинта
Предположим есть два микросервиса. В обоих микросервисах есть две одинаковые сущности, предположим покупатель. Мне нужно в первом...

Правильный REST URL для эндпоинта
Есть эндпоинт который в данный момент распологается по адресу /force-update. Он делает апдейт с удаленных сервисов, с которым мы...

15
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7348 / 4776 / 1237
Регистрация: 30.03.2015
Сообщений: 13,566
Записей в блоге: 29
28.01.2021, 08:18
308, а чего не ясно? requests для запросов unittest или pytest как раннер теста.
Делаем запрос, проверяем код ответа и чтов тексте ответа имя равно жанет.
1
0 / 0 / 0
Регистрация: 03.09.2020
Сообщений: 20
28.01.2021, 12:29  [ТС]
Цитата Сообщение от Welemir1 Посмотреть сообщение
308, а чего не ясно? requests для запросов unittest или pytest как раннер теста.
Делаем запрос, проверяем код ответа и чтов тексте ответа имя равно жанет.
Если честно - ничего не ясно) Чет даже примеров найти не могу как это делается
0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7348 / 4776 / 1237
Регистрация: 30.03.2015
Сообщений: 13,566
Записей в блоге: 29
28.01.2021, 12:40
308, не ври, заходим на сайт реквестс и смотрим как это делается, гуглим "тесты рест апи" и тоже тысячи примеров как это делается. Хочешь чтобы просто написали за тебя?
1
0 / 0 / 0
Регистрация: 03.09.2020
Сообщений: 20
28.01.2021, 15:00  [ТС]
Цитата Сообщение от Welemir1 Посмотреть сообщение
308, не ври, заходим на сайт реквестс и смотрим как это делается, гуглим "тесты рест апи" и тоже тысячи примеров как это делается. Хочешь чтобы просто написали за тебя?
Да нет, не надо мне готовое решение, сам хочу разобраться, поэтому и попросил примеры. Я вот начал
Python
1
2
3
4
5
import requests
 
def test_01_check_status_code():
    response = requests.get('https://reqres.in/api/single_user')
    assert response.status_code == 201
А у меня даже ошибка не падает

Добавлено через 20 минут
Странно, если без def , тогда отдает статус 200
0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7348 / 4776 / 1237
Регистрация: 30.03.2015
Сообщений: 13,566
Записей в блоге: 29
28.01.2021, 15:46
Лучший ответ Сообщение было отмечено Welemir1 как решение

Решение

308, давай сразу с раннером и сообщениями
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
from unittest import TestCase, main
 
import requests
 
 
class TestSomeEndpoint(TestCase):
 
    def test_get_returns_200(self):
        response = requests.get('https://reqres.in/api/single_user')
        self.assertEqual(201, response.status_code, "Code is not 200!")
 
 
if __name__ == '__main__':
    main()
вывод
Code
1
2
3
4
5
6
7
FAILED (failures=1)
 
Code is not 200!
200 != 201
 
Expected :201
Actual   :200
1
0 / 0 / 0
Регистрация: 03.09.2020
Сообщений: 20
28.01.2021, 19:05  [ТС]
Welemir1, ага, тупанул, забыл про TestCase в классе. А как текст ответа получить? response.text ?
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import requests
from unittest import TestCase, main
 
 
class TestSomeEndpoint(TestCase):
 
    def test_get_returns_200(self):
        response = requests.get('https://reqres.in/api/single_user')
        self.assertEqual(200, response.status_code, "Code is not 200!")
 
        print(response.text)
 
 
if __name__ == '__main__':
    main()
Пока без проверки, просто посмотреть.
Тогда получаю:
Python
1
{"page":1,"per_page":6,"total":12,"total_pages":2,"data":[{"id":1,"name":"cerulean","year":2000,"color":"#98B2D1","pantone_value":"15-4020"},{"id":2,"name":"fuchsia rose","year":2001,"color":"#C74375","pantone_value":"17-2031"},{"id":3,"name":"true red","year":2002,"color":"#BF1932","pantone_value":"19-1664"},{"id":4,"name":"aqua sky","year":2003,"color":"#7BC4C4","pantone_value":"14-4811"},{"id":5,"name":"tigerlily","year":2004,"color":"#E2583E","pantone_value":"17-1456"},{"id":6,"name":"blue turquoise","year":2005,"color":"#53B0AE","pantone_value":"15-5217"}],"support":{"url":"https://reqres.in/#support-heading","text":"To keep ReqRes free, contributions towards server costs are appreciated!"}}
И в нем нет first_name = "Janet"
0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7348 / 4776 / 1237
Регистрация: 30.03.2015
Сообщений: 13,566
Записей в блоге: 29
28.01.2021, 19:07
Цитата Сообщение от 308 Посмотреть сообщение
И в нем нет first_name = "Janet"
а я при чем?)) спрашивай у давших задание
1
0 / 0 / 0
Регистрация: 03.09.2020
Сообщений: 20
28.01.2021, 19:22  [ТС]
Цитата Сообщение от Welemir1 Посмотреть сообщение
а я при чем?)) спрашивай у давших задание
Ну я проверку сделаю и пусть падает). Видимо так составляли задание, там и в других тестах ошибок полно. Ну а текст ответа правильно получил?
0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7348 / 4776 / 1237
Регистрация: 30.03.2015
Сообщений: 13,566
Записей в блоге: 29
28.01.2021, 19:24
308, да, правильно. ТОгда пиши ассерт сначала на наличие поля фирст_нейм в ответе, а потом на его сожержимое и пусть падает, то лько сообщения не забудь. Жду после правок
1
Эксперт Python
5437 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
29.01.2021, 04:50
Цитата Сообщение от 308 Посмотреть сообщение
print(response.text)
Python
1
2
js = response.json()
js.get("first_name") == "Janet"
Это, так, пример. Где там на самом деле (на каком уровне вложенности) должно находится поле "first_name" известно только тем, кто писал API сайта.
1
0 / 0 / 0
Регистрация: 03.09.2020
Сообщений: 20
29.01.2021, 05:31  [ТС]
Цитата Сообщение от Garry Galler Посмотреть сообщение
Это, так, пример. Где там на самом деле (на каком уровне вложенности) должно находится поле "first_name" известно только тем, кто писал API сайта.
Я вчера примеры на гите погуглил, написал так:
Python
1
2
response_name = response.json()
self.assertEqual(response_name.get("first_name"), "Janet")
Прочитал сейчас сообщение и засомневался в правильности, там же действительно больше словарей может быть? Или не может быть больше чем текст выводит?
Python
1
{"page":1,"per_page":6,"total":12,"total_pages":2,"data":[{"id":1,"name":"cerulean","year":2000,"color":"#98B2D1","pantone_value":"15-4020"},{"id":2,"name":"fuchsia rose","year":2001,"color":"#C74375","pantone_value":"17-2031"},{"id":3,"name":"true red","year":2002,"color":"#BF1932","pantone_value":"19-1664"},{"id":4,"name":"aqua sky","year":2003,"color":"#7BC4C4","pantone_value":"14-4811"},{"id":5,"name":"tigerlily","year":2004,"color":"#E2583E","pantone_value":"17-1456"},{"id":6,"name":"blue turquoise","year":2005,"color":"#53B0AE","pantone_value":"15-5217"}],"support":{"url":"https://reqres.in/#support-heading","text":"To keep ReqRes free, contributions towards server costs are appreciated!"}}
0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7348 / 4776 / 1237
Регистрация: 30.03.2015
Сообщений: 13,566
Записей в блоге: 29
29.01.2021, 05:59
Цитата Сообщение от 308 Посмотреть сообщение
Или не может быть больше чем текст выводит?
выводит все что пришло

это их проблема что не сообщили где там эта Жанет и не привели пример ответа. Но ассерт я бы сделал другой как и писал выше -сначала ассерт что поле фирст_нейм вообще есть
1
0 / 0 / 0
Регистрация: 03.09.2020
Сообщений: 20
29.01.2021, 07:38  [ТС]
Цитата Сообщение от Welemir1 Посмотреть сообщение
выводит все что пришло
это их проблема что не сообщили где там эта Жанет и не привели пример ответа. Но ассерт я бы сделал другой как и писал выше -сначала ассерт что поле фирст_нейм вообще есть
Тогда так?
Python
1
2
3
4
5
6
7
    def test_get_returns_200(self):
        response = requests.get('https://reqres.in/api/single_user')
        self.assertEqual(200, response.status_code, "Code is not 200!")
 
        response_name = response.json()
        self.assertIn("first_name", response_name, "Key not found!")
        self.assertEqual(response_name["first_name"], "Janet", "Key first_name not equal Janet")
0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7348 / 4776 / 1237
Регистрация: 30.03.2015
Сообщений: 13,566
Записей в блоге: 29
29.01.2021, 08:34
308, да, только укажи какой именно кей нот фаунд
1
0 / 0 / 0
Регистрация: 03.09.2020
Сообщений: 20
29.01.2021, 10:33  [ТС]
Welemir1, спасибо большое за помощь!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
29.01.2021, 10:33
Помогаю со студенческими работами здесь

Поместить 3DMark13 в автотест
Ребят, привет! Нужна помощь в таком вопросике. Я установила 3DMark13, его менюшка, скорее всего, написана на флеше. Мне нужно...

Автотест для CRM Creatio
Добрый день. Вопрос в покрытии автотестом системы CRM Creatio. Написана на C#. Состоит из полей с выпадающим списком или поиском и...

ПММ Electrolux ESL6550RO, Автотест
Ошибка i40, нужна калибровка пресса. Подскажите, плиз, как запустить режим автотеста на 15мин.

Перестал запускаться автотест в IDEA на java
в проекте есть класс BaseTest куда вынесены проверки BeforAll. После доработки этого класса (были добавлены еще пара тестов BeforAll),...

Ремонт ПММ HANSA ZWM627IH, Как запустить автотест?
Здравствуйте коллеги, ПММ HANSA ZWM627IH, S/N:10604480542291. в процессе работы временами выдает ошибки :E1 -длительное наполнение,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Опции темы

Новые блоги и статьи
Интеграция Hangfire с RabbitMQ в проектах C#.NET
stackOverflow 18.04.2025
Разработка современных . NET-приложений часто требует выполнения задач "за кулисами". Это может быть отправка email-уведомлений, генерация отчётов, обработка загруженных файлов или синхронизация. . .
Построение эффективных запросов в микросервисной архитектуре: Стратегии и практики
ArchitectMsa 18.04.2025
Микросервисная архитектура принесла с собой много преимуществ — возможность независимого масштабирования сервисов, технологическую гибкость и четкое разграничение ответственности. Но как часто бывает. . .
Префабы в Unity: Использование, хранение, управление
GameUnited 18.04.2025
Префабы — один из краеугольных элементов разработки игр в Unity, представляющий собой шаблоны объектов, которые можно многократно использовать в различных сценах. Они позволяют создавать составные. . .
RabbitMQ как шина данных в интеграционных решениях на C# (с MassTransit)
stackOverflow 18.04.2025
Современный бизнес опирается на множество специализированных программных систем, каждая из которых заточена под решение конкретных задач. CRM управляет отношениями с клиентами, ERP контролирует. . .
Типы в TypeScript
run.dev 18.04.2025
TypeScript представляет собой мощное расширение JavaScript, которое добавляет статическую типизацию в этот динамический язык. В JavaScript, где переменная может свободно менять тип в процессе. . .
Погружение в Kafka: Концепции и примеры на C# с ASP.NET Core
stackOverflow 18.04.2025
Apache Kafka изменила подход к обработке данных в распределенных системах. Эта платформа потоковой передачи данных выходит далеко за рамки обычной шины сообщений, предлагая мощные возможности,. . .
Коммуникация в реальном времени с SignalR в C# на примере создания чата
UnmanagedCoder 17.04.2025
Современный веб стремительно эволюционирует от статичных страниц к динамичным приложениям, где пользователи ожидают мгновенной реакции на свои действия. Представим, что вы отправляете сообщение. . .
Реализация CQRS с MediatR на C# .NET
stackOverflow 17.04.2025
Современная разработка программного обеспечения постоянно ищет пути повышения эффективности организации кода. Архитектурные паттерны появляются, эволюционируют, и те, что проявляют свою. . .
Verilog и интеллектуальная собственность - "глазами" обученной LM модели.
Hrethgir 17.04.2025
В сети встречаются участники, заявляющие что код на Verilog ни о чём не говорит. Но вот патентная практика на самом деле показывает обратное ими утверждаемому. То-есть код на Verilog включают в. . .
Свап-файл дополнительно к разделу (если вдруг не хватает или не создан)
jigi33 17.04.2025
ПОДКЛЮЧЕНИЕ ДОПОЛНИТЕЛЬНОГО SWAP ПРОСТРАНСТВА, Т. О. , РАСШИРЕНИЕ ЕГО РАЗМЕРА В Linux можно использовать как раздел подкачки (swap), так и файл подкачки (swap-файл). Чтобы создать swap-файл вместо. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru