25 Mayıs 2021

Postman’da Test Yazımı

Bu yazımda sizlere Postman’da nasıl test yazılabileceğini ve en çok kullanılan test scriptlerinden bahsedeceğim.

Merhabalar,

Bu yazımda sizlere Postman’da nasıl test yazılabileceğini ve en çok kullanılan test scriptlerinden bahsedeceğim.

Postman’da API testi yaparken response’umuzu kontrol etmek amaçlı test senaryoları oluşturabiliriz. Bu sayede normalde manuel olarak yapacağımız kontrolleri yazdığımız script ile otomatize etmiş olacağız.

Test yazımı işlemini Tests tabı altında yapabiliriz. Test sonuçlarını ise Test Results kısmından kontrol edebiliriz. SNIPPETS bölümünde ise Postman’ın bize sağladığı hazır scriptleri kullanarak testlerimizi gerçekleştirebiliriz.

 

metin içeren bir resim Açıklama otomatik olarak oluşturuldu

 

Bir test yazımı gerçekleştirmeden önce pm.test fonksiyonu ile testimizi başlatabiliriz. Tek bir response için birden fazla test yazacak isek hepsini ayrı bir pm.test içinde yazarak test senaryolarımızın belirginleşmesini sağlayabiliriz.

İlk olarak response code değerinin nasıl kontrol edilebileceğine bakalım. Servisimizden dönen response code değerinin hangi http kodu ile döndüğünü aşağıdaki test ile kontrol edebiliriz.

 

pm.test("http durum kodu 200’dür", function () {

pm.response.to.have.status(200);

});

 

metin içeren bir resim Açıklama otomatik olarak oluşturuldu

 

Aynı şekilde aşağıdaki script ile de response code kontrolü yapılabilir.

 

pm.test("http durum kodu 200’dür", function () {

    pm.expect(pm.response.code).to.equal(200);

});

 

metin içeren bir resim Açıklama otomatik olarak oluşturuldu

 

Response time üzerinden de test yazımı gerçekleştirebiliriz. Aşağıdaki script ile response time değeri belirlediğimiz değerden küçükse pass değilse fail olarak senaryomuz sonuçlanır.

 

pm.test("Response time 200 ms’den küçüktür", function () {

    pm.expect(pm.response.responseTime).to.be.below(200);

});

 

metin içeren bir resim Açıklama otomatik olarak oluşturuldu

 

Response’daki değerler üzerinden test yazımı gerçekleştirebilmek için ilk başta response’umuzun çözümlenmesi gerekmektedir. Bu çözümlenmeyi aşağıdaki komutlar ile gerçekleştirebiliriz.

 

JSON: pm.response.json();

XML: xml2Json(pm.response.text());

HTML: cheerio.load(pm.response.text());

TEXT: pm.response.text();

 

Response üzerinden yazacağımız testlere https://reqres.in/api/users/3 servisi ile devam edebiliriz. Response Body’miz aşağıdaki gibidir.

 

metin içeren bir resim Açıklama otomatik olarak oluşturuldu

 

Response’daki herhangi bir parametreyi kontrol amaçlı aşağıdaki test senaryosunu yazabiliriz. Kontrol ettiğimiz parametre string bir değer ise parantez içinde çift tırnak içine almamız gerekmektedir. Eğer integer bir değer ise parantez içinde sade bir şekilde kalması gerekmektedir.

 

pm.test("Last Name Parametre Kontrolü", function () {

    var response = pm.response.json();

    pm.expect(response.data.last_name).to.eql("Wong");

});

 

metin içeren bir resim Açıklama otomatik olarak oluşturuldu

 

Yukardaki örnekte görüldüğü gibi direkt olarak last_name parametresi yazılmamıştır. Last_name’in yer aldığı path tam olarak belirtilmiştir. Eğer direkt olarak response.last_name yazılırsa testimiz parametrenin yer aldığı path’i bulamaz ve hata alır. Eğer parametreler bir dizin içinde değilse o zaman direkt olarak parametreyi test senaryomuzda kullanabiliriz.

Bunlara ek olarak not komutundan bahsedebiliriz. Not komutu birçok testte kullanabileceğimiz yardımcı bir komuttur. Yukardaki kullandığımız teste not komutunu ekleyip yeni bir örnek oluşturabiliriz. Bu şekilde eşitliği değil de eşit olmama durumunu kontrol etmiş oluruz.

 

metin içeren bir resim Açıklama otomatik olarak oluşturuldu

 

Diyelim ki response’umuzda bir değer dönecek fakat hangi parametre üzerinden döneceğini bilmiyoruz. Bu durumda aşağıdaki test senaryosu ile response body’si içinde ilgili değerin geçip geçmediği kontrol edilir.

Bu testimizde yukarda anlattığımız not yardımcı elemanını ekleyerek bir senaryo oluşturabiliriz.

 

pm.test("Response'da girilen değer bulunmamaktadır.", function () {

    pm.expect(pm.response.text()).to.not.include("Hakan");

});

 

metin içeren bir resim Açıklama otomatik olarak oluşturuldu

 

Son olarak yazının en başında bahsettiğim aynı response için birden fazla test senaryosu oluşturulabileceğine değinmek istiyorum. Kaç tane test senaryosu oluşturmak istiyorsak hepsi için ayrı ayrı pm.test oluşturarak senaryolarımızı ayırabiliriz.

 

metin içeren bir resim Açıklama otomatik olarak oluşturuldu

Umarım faydalı bir yazı olmuştur. Bir sonraki yazımda görüşmek üzere, sağlıcakla kalın.

KAYNAKLAR:

[1] https://learning.postman.com/docs/writing-scripts/script-references/test-examples/#testing-status-codes

[2] https://learning.postman.com/docs/writing-scripts/test-scripts/

 

Hakan KAPLAN