فقط اسم فیلدها و Status Code را عوض میکنی.
const uniqueSuffix = Date.now().toString().slice(-6); pm.environment.set("requestDateTime", new Date().toISOString()); pm.environment.set("idempotencyKey", pm.variables.replaceIn("{{$guid}}")); pm.environment.set("baseTitle", "Test Title " + uniqueSuffix); pm.environment.set("baseCode", uniqueSuffix);
Body نمونه:
{ "title": "{{baseTitle}}", "code": "{{baseCode}}" }
const uniqueSuffix = Date.now().toString().slice(-6); pm.environment.set("requestDateTime", new Date().toISOString()); pm.environment.set("idempotencyKey", pm.variables.replaceIn("{{$guid}}")); pm.environment.set("fixedTitle", "Duplicate Title"); pm.environment.set("baseCode", uniqueSuffix);
Body:
{ "title": "{{fixedTitle}}", "code": "{{baseCode}}" }
const uniqueSuffix = Date.now().toString().slice(-6); pm.environment.set("requestDateTime", new Date().toISOString()); pm.environment.set("idempotencyKey", pm.variables.replaceIn("{{$guid}}")); pm.environment.set("baseTitle", "Test Title " + uniqueSuffix); pm.environment.set("fixedCode", "DUP-CODE-001");
Body:
{ "title": "{{baseTitle}}", "code": "{{fixedCode}}" }
const uniqueSuffix = Date.now().toString().slice(-6); pm.environment.set("requestDateTime", "2020-01-01T00:00:00.000Z"); pm.environment.set("idempotencyKey", pm.variables.replaceIn("{{$guid}}")); pm.environment.set("baseTitle", "Test Title " + uniqueSuffix); pm.environment.set("baseCode", uniqueSuffix);
const response = pm.response.json(); pm.test("Status Code is 201", function () { pm.response.to.have.status(201); }); pm.test("ResultData exists", function () { pm.expect(response.resultData).to.not.be.null; }); pm.test("No errors returned", function () { pm.expect(response.errorList).to.be.an("array").that.is.empty; }); pm.test("Title matches request", function () { pm.expect(response.resultData.title).to.eql(pm.environment.get("baseTitle")); }); pm.test("Code matches request", function () { pm.expect(response.resultData.code).to.eql(pm.environment.get("baseCode")); }); if (pm.response.code === 201) { pm.environment.set("savedCode", response.resultData.code); pm.environment.set("savedTitle", response.resultData.title); }
const response = pm.response.json(); pm.test("Status Code is expected error", function () { pm.response.to.have.status(400); // change to 409, 401, 403, 404 if needed }); pm.test("ResultData is null", function () { pm.expect(response.resultData).to.be.null; }); pm.test("ErrorList exists", function () { pm.expect(response.errorList).to.be.an("array").that.is.not.empty; });
const response = pm.response.json(); pm.test("Status Code is 409", function () { pm.response.to.have.status(409); }); pm.test("Duplicate title error exists", function () { const error = response.errorList .flatMap(e => e.details || []) .find(d => d.field === "title"); pm.expect(error).to.not.be.undefined; });
const response = pm.response.json(); pm.test("Status Code is 409", function () { pm.response.to.have.status(409); }); pm.test("Duplicate code error exists", function () { const error = response.errorList .flatMap(e => e.details || []) .find(d => d.field === "code"); pm.expect(error).to.not.be.undefined; });
const response = pm.response.json(); pm.test("Status Code is 400", function () { pm.response.to.have.status(400); }); pm.test("Header error exists", function () { const errorText = JSON.stringify(response.errorList); pm.expect(errorText).to.match(/header|RequestDateTime|Idempotency|تاریخ|زمان/i); });
const response = pm.response.json(); pm.test("Status Code is success", function () { pm.response.to.be.success; }); if (response.resultData && response.resultData.code) { pm.environment.set("savedCode", response.resultData.code); }
در Request بعدی:
{ "parentCode": "{{savedCode}}" }
const response = pm.response.json(); pm.test("Status Code is 200", function () { pm.response.to.have.status(200); }); pm.test("ResultData exists", function () { pm.expect(response.resultData).to.not.be.null; }); pm.test("Returned code matches saved code", function () { pm.expect(response.resultData.code).to.eql(pm.environment.get("savedCode")); });
const response = pm.response.json(); pm.test("Status Code is 200", function () { pm.response.to.have.status(200); }); pm.test("Updated title returned", function () { pm.expect(response.resultData.title).to.eql(pm.environment.get("updatedTitle")); });
Pre-request برای Update:
const uniqueSuffix = Date.now().toString().slice(-6); pm.environment.set("requestDateTime", new Date().toISOString()); pm.environment.set("idempotencyKey", pm.variables.replaceIn("{{$guid}}")); pm.environment.set("updatedTitle", "Updated Title " + uniqueSuffix);
const response = pm.response.json(); pm.test("Status Code is 200 or 204", function () { pm.expect([200, 204]).to.include(pm.response.code); });
const response = pm.response.json(); pm.test("Deleted item should not be found", function () { pm.expect([404, 410]).to.include(pm.response.code); });
ابتدا در Pre-request Script داده داینامیک مثل requestDateTime، idempotencyKey، title و code تولید میکنم تا تست قابل تکرار باشد. سپس Request را با Body و Header معتبر ارسال میکنم. در Tests، ابتدا Status Code را بررسی میکنم، سپس ساختار Response مثل resultData و errorList را اعتبارسنجی میکنم. در سناریوهای موفق، مقادیر برگشتی مثل code را در Environment ذخیره میکنم تا در Requestهای بعدی برای Chain Request استفاده شود. در سناریوهای منفی، انتظار دارم resultData مقدار null داشته باشد و errorList شامل خطای مرتبط با همان فیلد یا Header باشد.
این مجموعه قابل تغییر برای تقریباً هر API است.