📡 Postman тесты: проверяем атрибуты ответов для всех HTTP
Когда мы автоматизируем API-тесты в Postman, недостаточно просто проверить статус‑код. Нужно валидировать все ключевые атрибуты ответа: заголовки, тело, время, куки. И делать это для каждого HTTP метода правильно.
Ниже — чек‑лист и примеры, которые пригодятся в работе.
🧩 Какие атрибуты ответа проверяем?
· Статус‑код (pm.response.code) — база, но не панацея. · Заголовки — Content-Type, Cache-Control, Location (для 201/302) и т.д. · Тело ответа — структура, типы данных, обязательные поля. · Время ответа — pm.response.responseTime (не должно быть >200–300 мс). · Cookies — если сервер устанавливает куки (например, sessionId).
🧪 Примеры тестов для разных методов
🔹 GET – получаем данные
pm.test(“Status 200 OK”, () => pm.response.to.have.status(200)); pm.test(“Content-Type = application/json”, () => pm.response.to.have.header(“Content-Type”, /application\/json/)); pm.test(“Тело не пустое”, () => pm.expect(pm.response.json().length).to.be.greaterThan(0)); pm.test(“Время ответа < 300 мс”, () => pm.expect(pm.response.responseTime).to.be.below(300));
🔹 POST – создаём ресурс
pm.test(“Status 201 Created”, () => pm.response.to.have.status(201)); pm.test(“Заголовок Location содержит URL нового ресурса”, () => pm.response.to.have.header(“Location”, /\/users\/\d+/)); pm.test(“В ответе есть поле id (число)”, () => { const json = pm.response.json(); pm.expect(json).to.have.property(“id”).that.is.a(“number”); });
🔹 PUT / PATCH – обновляем
pm.test(“Status 200 OK или 204 No Content”, () => pm.expect(pm.response.code).to.be.oneOf([200, 204])); pm.test(“При 200 тело содержит обновлённые поля”, () => { if (pm.response.code === 200) { const json = pm.response.json(); pm.expect(json.name).to.eql(pm.variables.get(“newName”)); } });
🔹 DELETE – удаляем
pm.test(“Status 204 No Content или 404 Not Found”, () => pm.expect(pm.response.code).to.be.oneOf([204, 404])); if (pm.response.code === 204) { pm.test(“Тело пустое”, () => pm.expect(pm.response.text()).to.be.empty); }
🛠️ Продвинутые приёмы
✅ Проверка схемы JSON (через ajv)
const schema = { type: “object”, properties: { id: { type: “integer” }, email: { type: “string”, format: “email” } }, required: [“id”, “email”] }; pm.test(“Схема валидна”, () => { pm.response.to.have.jsonSchema(schema); });
✅ Проверка кук
pm.test(“Кука sessionId существует”, () => pm.expect(pm.cookies.has(“sessionId”)).to.be.true); pm.test(“Значение куки не пустое”, () => pm.expect(pm.cookies.get(“sessionId”)).to.not.be.empty);
✅ Разные проверки для разных статусов
if (pm.response.code === 200) { // тесты для успеха } else if (pm.response.code === 400) { pm.test(“Тело содержит поле error”, () => pm.response.json().should.have.property(“error”)); }
💡 Итог
· Не ограничивайся статусом 200 – проверяй заголовки, структуру, время и куки. · Учитывай специфику метода – для POST проверяй Location и статус 201, для DELETE – 204. · Используй условные тесты, если ответ может быть разным (200/204).
Сохраняй себе и делись с командой! 🔥
А какие атрибуты ответа вы проверяете в первую очередь? Делитесь в комментариях 👇