Örnek ile Birlikte: Postman’de API Test Scripti Yazmak

Ozi's
Colendi
Published in
3 min readDec 17, 2023

Herkese merhaba 👋 Bu makeleyi Postman üzerinden API test senaryoları oluşturmak isteyenler için giriş seviye bir kaynak olması hedefi ile hazırladım. Umarım sizi hoşnut edecek ve konu hakkında kafanızda ışık yanmasını sağlayacak bir makale olur. Hadi başlayalım!

API Test Senaryosu Oluştururken Postman’i Kullanmak

Postman’de test scriptleri yazmak için Javascript kullanılmaktadır. İhtiyaca göre scriptlerin rahatça oluşturabilmesi için de içeriye Chai.js kütüphanesi gömülmüştür. Eğer Javascript hakkında ufak bir bilgiye sahipseniz kolayca senaryolarınızı yazmaya başlayabilirsiniz. Özellikle uygulamanın içindeki snippetları incelemek, mantığı kavrayıp testleri çeşitlendirme konusunda iyi bir başlangıç olacaktır.

Oluşturmak istediğiniz test senaryoları response üzerinde yapılacak kontroler üzerine ise Postman’in bu konuda sunduğu destek gayet yeterli durumda. Ek olarak yazılan senaryoların CI/CD pipeline’a kolayca entegre edilebilmesi ile istediğiniz API için kolayca test otomasyonu yapabilirsiniz. Hakeza manuel testlerinizi daha rahat koşabilir duruma getirmek konusunda da bir çok ihtiyacı karşılıyor. Lakin yazılmak istenen otomasyon senaryosu karmaşıklaştıkça piyasadaki başka alternatiflere yönelmek gerekebilir. (REST-assured, Katalon, apigee…)

Örnek Testi İnceleyelim

Testini yazacağımız servisin curl’ini aşağıda bulabilirsiniz:

curl --location 'https://simple-grocery-store-api.glitch.me/status'

Bu curl’i Postman arayüzünün sol üstünde bulunan “Import” butonuna tıkladıktan sonra çıkan ekrandaki text bara kopyalayarak servisi Postman’e import edebilirsiniz.

Aşağıda ilgili servis için yazılmış olan testi bulabilirsiniz:

// Response ve request'i birer değişkene atanıyor.
var responseJson = pm.response.json();
var request = pm.request;

// Test scripti pm.test fonksiyonu içine alınıyor.
pm.test("grocery-store test", function () {
try {
// Servisin hata alıp almadığı kontrol ediliyor.
pm.response.to.have.status(200);
// Response'da store itemi varsa ve "UP" değerine eşit ise, kontrolü ekleniyor.
pm.expect(responseJson).to.have.property("status").equals("UP");

// Eğer test başarılı olduysa konsola bunun bilgisi yazdırılıyor.
console.info('grocery-store test BAŞARILI');
} catch (error) {
// Eğer test başarısız olduysa başarısız olma sebebi, zamanı, atılan istek ve alınan cevap konsola yazdırılıyor.
console.error("grocery-store test BAŞARISIZ", error.message);
console.error('Timestamp:', new Date().toISOString());
console.error("REQUEST: ", request);
console.error("RESPONSE: ", responseJson);
// throw ile errror fırlatılıyor ki Postman'in 'Test Results' sekemesinde test sonuçları görülebilsin.
throw error;
}
});

Testin içinde try-catch yapısı kullanıldığı için, servisten hata alınan ya da scriptin başarısız sonuçlandığı durumlarda konsola istenilen detaylar loglanıyor. Böylelikle yakalanan hatanın neden oluştuğuna dair ipuçları edinilebiliyor.

Test scripti, arayüzdeki “Tests” sekmesinin içine kopyalandıktan sonra kullanıma hazır hale getirilmiş oluyor. Sağ üstte bulunan “Send” butonuna tıklandıktan sonra ise Postman önce servise istek atıyor. Ardından yazmış olduğumuz test scriptini koşuyor.

Eğer test başarı ile tamamlandıysa “Test Result” kısmında aşağıdaki şekilde başarılı sonuç görüntülenebiliyor:

Konsola bakıldığında da benzer şekilde testin başarı ile tamamlanmış olduğu görüntülenebilir:

Olur da servise atılan isteğin sonucunda bir hata oluşur ya da servis response’u scriptin beklediği şekilde değil ise “Test Results” kısmında testin başarısız olduğu bilgisi görüntülenebilir:

Yine benzer şekilde konsolda testin başarısız olduğu, ek olarak atılan istek, zamanı ve de servisin döndüğü cevap görüntülenebilir:

Böylelikle artık hızlıca Postman üzerinden test scriptlerinizi yazmaya başlayabilirsiniz. Eğer sciptleri çeşitlendirmek ya da bu konuda daha detaylı bilgi edinmek isterseniz bu linke tıklayarak Postman’in konu hakkındaki dökümanına ve bu linke tıklayarak Chai.js kütüphanesinin dökümanına erişebilirsiniz. Umarım sizi hoşnut eden bir makale olmuştur. Herkese iyi çalışmalar dilerim.

Kaynakça

--

--