📝 Задания из лекции

← К оглавлению урока

⚡ Задания урока

  1. Получить список активных компаний и проверить их количество (≥ 3)
  2. Написать негативный тест: пустое тело при создании компании → 422
  3. Проверить, что создание компании увеличивает список на 1
  4. Выполнить GET-запрос к reqres.in/api/users/2 и проверить данные пользователя

Задание 1: Получить список активных компаний

API: GET http://5.101.50.27:8000/company/list

Условие

Написать pytest-тест, который:

  1. Отправляет GET-запрос на получение списка компаний
  2. Проверяет, что запрос успешен (статус 200)
  3. Фильтрует только активные компании (is_active: true)
  4. Проверяет, что в списке есть хотя бы 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

Условие

Разработать тест, который:

  1. Получает список всех компаний и запоминает его длину (initial_count)
  2. Создаёт новую компанию через POST
  3. Повторно получает список всех компаний
  4. Проверяет, что количество компаний увеличилось ровно на 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 и проверить:

  1. Статус ответа: 200 OK
  2. В ответе есть ключ "data"
  3. ID пользователя равен 2
  4. Имя (first_name): "Janet"
  5. Фамилия (last_name): "Weaver"
  6. 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"]