📝 Задания из лекции
⚡ Задания урока
- Получить список активных компаний и проверить их количество (≥ 3)
- Написать негативный тест: пустое тело при создании компании → 422
- Проверить, что создание компании увеличивает список на 1
- Выполнить GET-запрос к reqres.in/api/users/2 и проверить данные пользователя
Задание 1: Получить список активных компаний
API: GET
http://5.101.50.27:8000/company/list
Условие
Написать pytest-тест, который:
- Отправляет GET-запрос на получение списка компаний
- Проверяет, что запрос успешен (статус 200)
- Фильтрует только активные компании (
is_active: true) - Проверяет, что в списке есть хотя бы 3 активные компании
Структура ответа API
[
{
"name": "QA Студия 'ТестировщикЪ'",
"description": "Качественное тестирование для успешных проектов",
"is_active": true
},
{
"name": "Служба поддержки QA",
"description": "Помощь и поддержка в вопросах тестирования",
"is_active": false
}
]
Подсказка
Для фильтрации используй list comprehension: [c for c in companies if c["is_active"]]
Задание 2: Негативный тест — пустое тело
API: POST
http://5.101.50.27:8000/company/create
Условие
Проверить, что при отправке пустого тела при создании компании API:
- Возвращает статус-код 422 Unprocessable Entity
- В теле ответа содержит ошибку, где значение по ключу
"msg"равно"Field required"
Подсказка по структуре ответа
{
"detail": [
{
"type": "missing",
"loc": ["body", "name"],
"msg": "Field required",
"input": {}
}
]
}
Подсказка
Путь к сообщению об ошибке: response["detail"][0]["msg"]
Задание 3: Проверить рост списка компаний
API: GET
/company/list и POST /company/create
Условие
Разработать тест, который:
- Получает список всех компаний и запоминает его длину (
initial_count) - Создаёт новую компанию через POST
- Повторно получает список всех компаний
- Проверяет, что количество компаний увеличилось ровно на 1
Подсказка
Порядок: GET → запомнить len → POST → GET → assert new_count == old_count + 1
Задание 4: GET-запрос к reqres.in
API: GET
https://reqres.in/api/users/2
⚠️ С 2024 года reqres.in требует бесплатный API-ключ. Добавляйте заголовок в каждый запрос, иначе получите
401:
requests.get(url, headers={"x-api-key": "reqres-free-v1"}). Актуальность ключа — на reqres.in.
Условие
Используя библиотеку requests, выполнить GET-запрос к https://reqres.in/api/users/2 и проверить:
- Статус ответа: 200 OK
- В ответе есть ключ
"data" - ID пользователя равен 2
- Имя (
first_name): "Janet" - Фамилия (
last_name): "Weaver" - Email: "janet.weaver@reqres.in"
Бонус: написать тест на несуществующего пользователя (ID=23) → ожидаем 404 и пустое тело {}.
Ожидаемая структура ответа
{
"data": {
"id": 2,
"email": "janet.weaver@reqres.in",
"first_name": "Janet",
"last_name": "Weaver",
"avatar": "https://reqres.in/img/faces/2-image.jpg"
},
"support": {
"url": "https://reqres.in/#support-heading",
"text": "To keep ReqRes free, contributions towards server costs are appreciated!"
}
}
Подсказка
Доступ к данным: user = data["data"], затем user["first_name"]