Karate ile Web Servis Testi

HardwareAndro
HardwareAndro
Published in
3 min readMay 25, 2019

--

Merhaba bu yazımızda karate ile rest api testlerini nasıl yapacağımızdan bahsederek birlikte küçük bir proje yapalım.

Karate Peter Thomas tarafından geliştirilen açık kaynak kodlu api test otomasyon aracıdır. Cucumber altyapısını kullanarak Gherkin dili ile yazılır. Given when then (BDD sözdizimi) ile birlikte feature,scenario keywordleriyle birlikte oldukça kolay yazarak apilerinizin testlerini otomatize edebilirsiniz.. Biraz bahsettikten sonra gereksinimlerimize geçerek demo bir rest api testi yapalım.(Karate ile normalde SoapUi testleri de yapılabiliyor.Fakat biz bu yazımızda rest api testi yapacağız.)

Projenin github linki

https://github.com/sevilayagil/Karate-Api-Testing

Gereksinimler:

Java jdk 1.8 sürümü ve üzeri

https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

Intellij

https://www.jetbrains.com/idea/download/#section=windows

Cucumber Plugin

File>settings>plugins>cucumber for java

Karate Github

https://github.com/intuit/karate

Dummy Demo site

http://dummy.restapiexample.com/

Geliştirme ortamını ayarlama

Adım 1: Maven Projesi Oluşturma:(Create Maven Project)

File >new >Project diyerek maven projesi oluşturalım.

File >new >Project
Maven projesi oluşturma

Devamında ilerleyip finish diyerek maven projemizi oluşturmus oluyoruz.

Adım 2: Karate Kurulumu

Karate kütüphanesini pom xml dosyamıza ekleyelim.

Adım 3: Proje Dizini Oluşturma (Project Directory Structure)

Proje dizini

Src>test>java’nın altına bir package oluşturalım. Ben ismine KarateApi Testing verdim.

Package oluşturma

Şimdi de packageimize sağ tıklayarak projemizi çalıştıracağımız Testrunner adlı java classımızı oluşturalım.

Package>new>java class

Devamında packageimize sağ tıklayarak feature file dosyamızı oluşturalım. Ben ismini KarateApi vererek .feature uzantılı olarak file şeklinde oluşturdum.

Sonrasında feature dosyamızda kullanmak üzere config dosyamızı oluşturalım.

Src>test >java altında .js uzantılı( karate-config.js) file şeklinde oluşturuyoruz.

Projemizin iskeletini oluşturduğumuza göre işe koyulabiliriz.

Adım 4: Geliştirmeye Başlama (Getting Started with Development)

Önce config dosyamızın içeriğini tanımlayalım.

Projemizde http://dummy.restapiexample.com/ dummy bir site kullanacağız.

http://dummy.restapiexample.com/api/v1/employees

http://dummy.restapiexample.com/api/v1/employee/1

http://dummy.restapiexample.com/api/v1/create

Yukarıdaki 3 tane apimizi otomatize etmek için incellediğimizde hepsinin ortak dizin ile başladığını ve yalnızca pathlerinin farklı olduğunu görmekteyiz. Bu yüzden bir fonksiyon oluşturarak configde apiURL olarak v1 e kadar yazalım.

Devamında feature dosyamızın içeriğini yazalım. Burada configten okuduğumuz urlyi apiURL ile tanımlayıp senaryolarımızda çağırmak için backgroundda yazıyoruz. Create apisinde kullanıcı adının uniq bir şey olması gerektiğinden dolayı burada random bir değer üretip bunu randomnumber değişkenine atıyorum. Sonrasında name adlı değişkende kullanılmak üzere text + random bir sayı şeklinde unique bir değer elde etmiş oluyorum. Senaryolarda ise bu name’i karatenin syntaxına göre yazarak requestte gönderiyorum

İlk senaryomuz Çalışan verilerini getiren bir get apisidir.İkinci senaryomuz ise bir post methodudur. Burada requestte değer göndererek database e kayıt atabiliriz. Üçüncü senaryomuz ise çalışanlardan birini getiren bir get methodudur.

Feature içeriğimize de oluşturdukten sonra projemizin runner class içeriğini dolduralım. Burada RunWith’le(Karate.class) projemizin karate ile çalışacağını belirtiyoruz.Burada test esnasında cucumber html rapor, json raporlar oluşturulması için gerekli methodları tanımlıyoruz. Proje çalıştıktan sonra target klasörü altında raporları bize sunmuş oluyor.

Raporumuzu çalıştırdığımızda ise görüntü aşağıdaki gibi olacaktır.

Cucumber Raporu

Karate ile web service testlerinin nasıl yapıldığını kısaca özetlemeye çalıştım. Bir sonraki yazılarımızda görüşmek dileğiyle :)

Sevilay Ağıl

--

--

HardwareAndro
HardwareAndro

iOS ,kotlin,xamarin,react native,flutter bot ,android, firebase,Test,BI and we love kids programming. so life development (: @github/vb10