Automation Testing

Karate a Rest Test Tool – Basic API Testing

By Test Guild
  • Share:
Join the Guild for FREE
Karate DSL API Testing

I recently learned about a new, open-source API testing tool called Karate, which helps with testing web and REST services API’s in Java. So I thought I’d enter the API testing dojo and check out how it works. Today’s post will focus on some Karate DSL basic techniques.

*I first learned about Karate in early 2017, when the tool was still in its early stages of development, and immediately saw its potential. Since then Karate as matured in a stable tool with unique functionality, such as having API Testing, API testing doubles, and API performance testing all available in one framework.

API tests are written using BDD Gherkin syntax. But unlike most BDD frameworks (Cucumber, JBehave, SpecFlow), you don't need to write step definitions. Karate has already created all the step definitions you need to get started testing APIs.

If you're new to programming or automation testing Karate is easy to use since no Java knowledge is required. If this is you, Karate might be the perfect choice for your team.

Karate API Test Tool Setup

Before we can check out some of the testing moves you can perform with Karate, we need to have a project set up.

The easiest way to do this is to create a new project based on the Karate Maven archetype using Maven. I’ll assume you already have Java and Maven installed. If not, check out my videos on How to Install Java and How to Install Maven.

Set Up your Karate REST Test Project

1. Start up your favorite IDE. (I’ll be using Eclipse for this example.)
2. Go to File>New>Maven Project and take the defaults on first screen.
3. Under New Maven Project, create a click on Add Archetype
4. Enter the following info:

Archetype Group Id= com.intuit.karate
ArchetypeArtifactId= karate-archetype
ArchetypeVersion=0.2.7
5. Click OK.
6. It should find the Karate-archetype. Click on Next.
7. On the next screen, enter:

GroupId=com.testtalks.karatedemo
ArtifactId=karatedemo

Existing Java CucumberJVM Maven Projects

If you have an existing CucumberJVM Maven project, all you need to do is add the following dependency in your pom.xml file:
[cc lang=”xml”]

com.intuit.karate
karate-junit4
0.2.7
test

[/cc]
Once you have your project set up, we can begin coding your REST test API in Java.

We’ll be using Jenkins as the test application. Jenkins comes with a nice REST API that we can easily interact with as an example to test JSON.

Create your First Rest API Test using Karate

1. Under src/test/java, create a new file called Jenkins.feature
2. Enter the following:
Feature: Demo Karate against Jenkins

Scenario: Verify that Jenkins is up and running


Given url 'http://localhost:8080/api/json?pretty=true'
When method get
Then status 200
And match response.jobs[*].name contains ['JoeProject1']

Click Run.

Your test should pass.

Karate Rest Test Tool – No Code Required!

What’s cool about Karate is that unlike most BDD frameworks (Cucumber, JBehave and SpecFlow), you don’t need to write step definitions. The reason for that is that Karate has already created all the step definitions you need in order to get started with JSON, HTTP or XML.

You don’t even need to write Java code! You can create your API test in a BDD syntax without the overhead of writing any code to implement your scenarios.

Rest API Test Tool Using CucumberJVM

Since Karate’s REST test tool is built on top of Cucumber-JVM, you can run your tests, view reports and leverage any other Cucumber functionality just as with any standard Java project.

In addition, the “Getting Started” guide for Karate recommends using jUnit — NOT TestNG — since things like dynamic tables, data-driven testing and tag groups are already built in.

Is Karate Better Than Rest-Assured?

I’m just getting started with Karate myself, but as you can see in the video I was able to navigate pretty easily with zero prior knowledge of it.  Its too early for me to really compare Karate vs Rest-Assured. I'm also a big believer in that there is not better tool its more what tool is better for your team. I know that the creator of Karate Peter has an awesome comparison of the two.  What do you think?

{"email":"Email address invalid","url":"Website address invalid","required":"Required field missing"}

What is Synthetic Monitoring? (2024 Guide)

Posted on 04/18/2024

I've found over the years many testers are unsure about what is synthetic ...

SafeTest: Next Generation Testing Framework from Netflix

Posted on 03/26/2024

When you think of Netflix the last thing you probably think about is ...

Top Free Automation Tools for Testing Desktop Applications (2024)

Posted on 03/24/2024

While many testers only focus on browser automation there is still a need ...

Discover Why Service Virtualization is a Game-Changer:  Register Now!