slogan3

Ontwikkel geavanceerde Postman API-validatie scripts

description

Met deze prompt kan ik geavanceerde en gedetailleerde validatiescripts ontwikkelen die verder gaan dan standaard checks. Dit helpt om mijn API testen nauwkeuriger te maken, fouten beter te detecteren en robuuste foutafhandeling te implementeren. Het bespaart tijd doordat ik direct bruikbare scripts krijg die ik in Postman kan integreren, wat mijn testefficiëntie en betrouwbaarheid verhoogt.

prompt

Help me geavanceerde validatie scripts te ontwikkelen voor mijn API-testen in Postman. Mijn API details zijn: API Endpoint: <voer de URL van je API eindpunt in> HTTP Methode: <selecteer GET, POST, PUT, DELETE, etc.> Verwachte Response Headers: <beschrijf de headers die je verwacht te ontvangen> Validatieregels voor response body: <beschrijf de specifieke validatieregels of JSON-sc ...

try_prompt

generate_helper
disclaimerOnPageApi

ai_answers

provider: openai
model: gpt-4.1-nano
Hier is een volledig validatiescript dat je direct in Postman kunt gebruiken. Het controleert de response headers, body structuur, data types, datumnotatie, numerieke bereiken, en behandelt foutscenario's zoals status 400 met foutcodes en berichten. Het script maakt gebruik van JavaScript en Postman’s pm API. ```javascript // Controleer of de response status 200 is (succes) of 400 (fout) pm.test("Status code is 200 of 400", function () { pm.expect(pm.response.code).to.be.oneOf([200, 400]); }); // Controleer de Content-Type header pm.test("Content-Type is application/json", function () { pm.expect(pm.response.headers.get('Content-Type')).toMatch(/application\/json/); }); // Parseer de response body let responseData; try { responseData = pm.response.json(); } catch (e) { pm.test("Responsedata kan niet worden geparsed als JSON", function () { throw new Error("Response body is geen geldig JSON"); }); } // Afhandeling op basis van status code if (pm.response.code === 200) { // Validatie voor succesvolle response pm.test("Response body heeft de juiste structuur en datatypes", function () { pm.expect(responseData).to.have.property('id'); pm.expect(responseData).to.have.property('name'); // Controleer datatypes pm.expect(responseData.id).to.be.a('number'); pm.expect(responseData.name).to.be.a('string'); // Optioneel: controleer dat id een geheel getal is pm.expect(responseData.id % 1).to.equal(0); }); // Extra validaties voor specifieke velden (bijvoorbeeld datums en numerieke waarden) // Aangezien je voorbeeld geen datum of numerieke range bevat, voeg ik hier voorbeelden toe // Voorbeeld: Stel dat er een veld 'birthdate' is in formaat YYYY-MM-DD if (responseData.birthdate) { pm.test("birthdate is in formaat YYYY-MM-DD", function () { const dateRegex = /^\d{4}-\d{2}-\d{2}$/; pm.expect(responseData.birthdate).to.match(dateRegex); }); } // Voorbeeld: Stel dat er een veld 'score' tussen 1 en 50 ligt if (responseData.score !== undefined) { pm.test("score is tussen 1 en 50", function () { pm.expect(responseData.score).to.be.at.least(1); pm.expect(responseData.score).to.be.at.most(50); }); } } else if (pm.response.code === 400) { // Validatie voor foutstatus pm.test("Foutrespons bevat foutcode en bericht", function () { pm.expect(responseData).to.have.property('errorCode'); pm.expect(responseData).to.have.property('message'); // Optioneel: controleer dat errorCode een string of nummer is pm.expect([typeof responseData.errorCode, typeof responseData.errorCode]).to.satisfy(function (type) { return type === 'string' || type === 'number'; }); }); // Extra: Log foutbericht console.log("Foutmelding:", responseData.message); } // Optioneel: Controleer dat response headers geen onverwachte waarden bevatten pm.test("Geen onverwachte headers aanwezig", function () { let headers = pm.response.headers; // Voeg hier extra header-validaties toe indien nodig }); ``` **Opmerking:** Pas de veldnamen en validaties aan op basis van je daadwerkelijke API-respons. Als je meer velden hebt of afwijkende datatypes, voeg dan vergelijkbare tests toe. Dit script biedt een goede basis voor uitgebreide API-validaties in Postman.
provider: deepseek
model: deepseek-chat
Hier is een geavanceerd Postman testscript dat aan al je vereisten voldoet: ```javascript // Postman Test Script voor User API // Plaats dit in de "Tests" tab van je Postman request // ===== CONFIGURATIE ===== const EXPECTED_BASE_URL = "https://api.example.com/v1/users"; const EXPECTED_CONTENT_TYPE = "application/json"; const DATE_REGEX = /^\d{4}-\d{2}-\d{2}$/; const MIN_COUNT = 1; const MAX_COUNT = 50; // ===== VALIDATIE FUNCTIES ===== // Valideer response status function validateResponseStatus(response) { const status = response.status; if (status === 200) { pm.test("Status code is 200", function () { pm.response.to.have.status(200); }); return true; } else if (status === 400) { pm.test("Status code is 400 voor foutafhandeling", function () { pm.response.to.have.status(400); }); validateErrorResponse(response); return false; } else { pm.test(`Onverwachte status code: ${status}`, function () { pm.expect.fail(`Onverwachte status code: ${status}. Verwacht 200 of 400.`); }); return false; } } // Valideer error response function validateErrorResponse(response) { const jsonData = response.json(); pm.test("Error response bevat foutcode", function () { pm.expect(jsonData).to.have.property('error_code'); pm.expect(jsonData.error_code).to.be.a('string'); }); pm.test("Error response bevat foutbericht", function () { pm.expect(jsonData).to.have.property('message'); pm.expect(jsonData.message).to.be.a('string'); pm.expect(jsonData.message.length).to.be.greaterThan(0); }); } // Valideer response headers function validateHeaders(response) { pm.test("Content-Type is application/json", function () { pm.response.to.have.header("Content-Type"); pm.expect(pm.response.headers.get("Content-Type")).to.include(EXPECTED_CONTENT_TYPE); }); } // Valideer basis JSON schema function validateJsonSchema(jsonData) { pm.test("Response body heeft correct JSON schema", function () { pm.expect(jsonData).to.be.an('object'); pm.expect(jsonData).to.have.all.keys('id', 'name'); // Valideer required properties pm.expect(jsonData).to.have.property('id'); pm.expect(jsonData).to.have.property('name'); // Valideer data types pm.expect(jsonData.id).to.be.a('number'); pm.expect(jsonData.name).to.be.a('string'); }); } // Valideer specifieke data types function validateSpecificDataTypes(jsonData) { // Valideer datum formaat indien aanwezig if (jsonData.hasOwnProperty('date')) { pm.test("Datum heeft correct formaat (YYYY-MM-DD)", function () { pm.expect(jsonData.date).to.be.a('string'); pm.expect(DATE_REGEX.test(jsonData.date)).to.be.true; // Extra validatie: controleer of het een geldige datum is const dateObj = new Date(jsonData.date); pm.expect(dateObj.toString()).to.not.equal('Invalid Date'); }); } // Valideer count indien aanwezig if (jsonData.hasOwnProperty('count')) { pm.test(`Count is tussen ${MIN_COUNT} en ${MAX_COUNT}`, function () { pm.expect(jsonData.count).to.be.a('number'); pm.expect(jsonData.count).to.be.at.least(MIN_COUNT); pm.expect(jsonData.count).to.be.at.most(MAX_COUNT); }); } } // Valideer array response (indien van toepassing) function validateArrayResponse(jsonData) { if (Array.isArray(jsonData)) { pm.test("Response is een array", function () { pm.expect(jsonData).to.be.an('array'); pm.expect(jsonData.length).to.be.at.least(0); }); // Valideer elk object in de array jsonData.forEach((item, index) => { pm.test(`Item ${index} heeft correcte structuur`, function () { pm.expect(item).to.be.an('object'); pm.expect(item).to.have.all.keys('id', 'name'); pm.expect(item.id).to.be.a('number'); pm.expect(item.name).to.be.a('string'); }); }); } } // ===== DYNAMISCHE VARIABELEN VERWERKING ===== // Sla response data op in variabelen voor hergebruik function setEnvironmentVariables(jsonData) { if (jsonData.id) { pm.environment.set("last_user_id", jsonData.id); console.log(`User ID ${jsonData.id} opgeslagen in environment`); } if (jsonData.name) { pm.environment.set("last_user_name", jsonData.name); console.log(`User name "${jsonData.name}" opgeslagen in environment`); } } // ===== HOOFD VALIDATIE LOGICA ===== try { // Valideer response status const isValidStatus = validateResponseStatus(pm.response); if (isValidStatus) { // Valideer headers validateHeaders(pm.response); // Parse en valideer JSON let jsonData; try { jsonData = pm.response.json(); pm.test("Response body is geldige JSON", function () { pm.expect(jsonData).to.be.an('object').or.an('array'); }); } catch (parseError) { pm.test("Response body is geldige JSON", function () { pm.expect.fail(`Ongeldige JSON: ${parseError.message}`); }); return; } // Voer validaties uit op basis van response type if (Array.isArray(jsonData)) { validateArrayResponse(jsonData); } else { validateJsonSchema(jsonData); validateSpecificDataTypes(jsonData); } // Sla data op in environment variabelen setEnvironmentVariables(jsonData); // Response tijd validatie pm.test("Response tijd is acceptabel", function () { pm.expect(pm.response.responseTime).to.be.below(3000); }); console.log("✅ Alle validaties succesvol voltooid"); } } catch (error) { pm.test("Geen onverwachte fouten tijdens validatie", function () { pm.expect.fail(`Validatie fout: ${error.message}`); }); } // ===== EXTRA PERFORMANCE & SECURITY CHECKS ===== // Security headers check pm.test("Security headers zijn aanwezig", function () { pm.response.to.have.header("X-Content-Type-Options"); pm.response.to.not.have.header("X-Powered-By"); }); // Response size check pm.test("Response size is redelijk", function () { const responseSize = pm.response.responseSize; pm.expect(responseSize).to.be.below(100000); // Max 100KB }); // ===== CUSTOM ASSERTION MESSAGES ===== // Maak testspecifieke berichten console.log(`📊 Response Info: - Status: ${pm.response.code} ${pm.response.status} - Tijd: ${pm.response.responseTime}ms - Size: ${pm.response.responseSize} bytes - URL: ${pm.request.url}`); if (pm.response.json()) { console.log(`📄 Response Body Preview:`, JSON.stringify(pm.response.json()).substring(0, 200) + '...'); } ``` **Gebruiksaanwijzing:** 1. **Plaats in Postman:** Kopieer dit script naar de "Tests" tab van je Postman request 2. **Environment Variables:** Het script slaat automatisch `last_user_id` en `last_user_name` op in je environment 3. **Aanpassingen:** Pas de constants bovenaan aan voor je specifieke API 4. **Uitvoering:** Run de request en bekijk de "Test Results" tab **Features:** - ✅ Complete JSON schema validatie - ✅ Dynamische datum/count validatie - ✅ Error response handling (400 status) - ✅ Environment variable management - ✅ Performance & security checks - ✅ Gedetailleerde logging - ✅ Custom error messages - ✅ Array response ondersteuning Het script geeft duidelijke Nederlandse foutmeldingen en werkt zowel voor succesvolle responses als foutscenario's!