📡 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).

Сохраняй себе и делись с командой! 🔥

А какие атрибуты ответа вы проверяете в первую очередь? Делитесь в комментариях 👇