Rest Assured ile API Testi

Merhabalar bugün Rest Assured ile API testi hakkında bilgi vermeye çalışacağım.

Rest Assured Java dilinde API testlerimizi yazmamızı sağlayan bir teknolojidir. Bugünkü senaryomuzda Rick And Morty API’ı kullanarak 2 test yazacağız. Rick And Morty API’ı Rick And Morty dizisindeki karakterler ve mekanlar ve bölümler hakkında bilgilerin bulunduğu bir API. Öncelikle API’daki /character endpoint’i ile tüm karakterleri çekeceğiz ve daha sonra bunu bir objeye atayıp location bilgisi “Earth (Replacement Dimension)” olanların toplam sayısını bulacağız ve bu karakterleri bir listeye atıp ekrana yazdıracağız.

2. testimizde ise /character endpoint’ine name parametresi ekleyerek ismi rick olan karakterleri çekip adı Rick Sanchez olan karakteri seçerek bu karakterin id, status, gender ve location bilgilerinin beklenen değerlerle eşit olup olmadığını kontrol edeceğiz.

Projemizde kullandığımız bağımlılıklar bu şekilde. Rest Assured 4.3.0 versiyonunu kullanıyorum.

Rick And Morty API’ını ve dönen json değerleri inceleyebilmeniz için API’ın dökümantasyonundan yararlanabilirsiniz.

Ben API’ın /character endpointini ve aynı endpoint’in name parametreli versiyonunu kullanacağım. Endpointten dönen json’ı Character objesine çevirmek için Jackson kullanıyorum.

Burda json properties ile id, name, status, gender ve location değerlerini alıyorum ve geri kalan değerlerle bir işlem yapmayacağım için @JsonIgnoreProperties(ingoneUnknown=true) annotation’ını kullanıyorum.

Burdaki Location değeri de bir obje olduğu için onun için de Location modelini oluşturuyorum.

Bir BaseService açıyorum ve içinde RequestSpecification dönen setupRequestSpecification methodunu yazıyorum. Bu Methodda API’ımızın Url’i bulunuyor.

Daha sonra CharacterServices classında BaseServices classından kalıtım aldım ve getAllCharacters methodunu yazdım. Bu method ile BaseService’teki setupRequestSpecification methodundan RequestSpecification değerini alıyorum daha sonra character endpointi ile tüm gelen karakter listesini alıyorum ve yazmış olduğumuz Character modelinin listesine ekliyorum.

İkinci testim için de getAllCharactersByName methodunu yazıyorum bu method dışardan name bilgisi alıyor ve yapacağı isteğin içine bu name bilgisini parametere olarak ekliyor buna göre de bir karakter listesi dönüyor ve Character modelinin listesine bunu da ekliyorum.

Test Classımızda da 2 tane test var bunlardan biri numberOfLocationEarth methodu burda yazmış olduğumuz getAllCharacters methodunu çağırıyoruz ve dönen listeden Location Name’i “Earth (Replacement Dimension)” olanların sayısını ve isimlerini dönüyoruz. Burda toplam sayının 9 olduğunu kontrol ediyoruz.

Diğer testimizde de getAllCharactersByName methodunu “Rick” parametresi ile çağırıyoruz. Ve dönen listeden Name değeri Rick Sanchez’e eşit olan Character Nesnesinin location name, gender, id ve Status değerlerinin beklenen değerlerle eşit olup olmadığını kontrol ediyoruz.

Run All diyerek testleri çalıştırdığımızda çıktının aşağıdaki gibi olduğunu ve 2 testimizin de pass olduğunu görüyoruz.

Projeyi Github’da incelemek isterseniz aşağıdaki adresten inceleyebilirsiniz.

Bu yazımda size Rest Assured hakkında bilgi vermeye çalıştım. Bir sonraki yazımda görüşmek üzere hoşçakalın.

Kaynaklar: