Zerocode Logo

Automated API testing has never been so easy

API Performance Testing Twitter Follow

Latest release:🏹 Maven
Continuous Integration: Build Status
Issue Discussions: Slack
Mailing List: Mailing List
License: Apache 2.0
LinkedIn: Zerocode

Zerocode makes it easy to create and maintain automated tests with absolute minimum overhead for REST,SOAP, Kafka Real Time Data Streams and much more. It has the best of best ideas and practices from the community to keep it super simple, and the adoption is rapidly growing among the developer/tester community.

Quick Links

For a quick introduction to Zerocode and its features, visit the

Maven Dependency

Introduction

Zerocode is a new lightweight, simple and extensible open-source framework for writing test intentions in simple JSON or YAML format that facilitates both declarative configuration and automation.

Put simply, Zerocode alleviates pain and brings simplicity to modern API automation. The framework manages the response validations, target API invocations, load/stress testing and security testing in a unified way using simple YAML/JSON/Fluent steps, aka DSL.

For example, if your REST API URL https://localhost:8080/api/v1/customers/123 with GET method and "Content-Type": "application/json" returns the following payload and a http status code 200(OK) ,

Response:
{
    "id": 123,
    "type": "Premium High Value",
    "addresses": [
        {
            "type":"home",
            "line1":"10 Random St"
        }
    ]
}

then, we can easily validate the above API using Zerocode like below.

  • Using YAML described as below,

The beauty here is, we can use the payload/headers structure for validation as it is without any manipulation or use a flat JSON path to skip the hassles of the entire object hierarchies.

Validators

Using YAML


---
url: api/v1/customers/123
method: GET
request:
  headers:
    Content-Type: application/json
retry:
  max: 3
  delay: 1000
validators:
- field: "$.status"
  value: 200
- field: "$.body.type"
  value: Premium Visa
- field: "$.body.addresses[0].line1"
  value: 10 Random St

or

Using JSON

{
  "url": "api/v1/customers/123",
  "method": "GET",
  "request": {
    "headers": {
      "Content-Type": "application/json"
    }
  },
  "retry": {
    "max": 3,
    "delay": 1000
  },
  "validators": [
    {
      "field": "$.status",
      "value": 200
    },
    {
      "field": "$.body.type",
      "value": "Premium Visa"
    },
    {
      "field": "$.body.addresses[0].line1",
      "value": "10 Random St"
    }
  ]
}

Matchers

Using YAML


---
url: api/v1/customers/123
method: GET
request:
  headers:
    Content-Type: application/json
retry:
  max: 3
  delay: 1000
verify:
  status: 200
  headers:
    Content-Type:
    - application/json; charset=utf-8
  body:
    id: 123
    type: Premium Visa
    addresses:
    - type: Billing
      line1: 10 Random St
verifyMode: LENIENT

or

Using JSON

{
  "url": "api/v1/customers/123",
  "method": "GET",
  "request": {
    "headers": {
      "Content-Type": "application/json"
    }
  },
  "retry": {
    "max": 3,
    "delay": 1000
  },
  "verify": {
    "status": 200,
    "headers": {
      "Content-Type" : [ "application/json; charset=utf-8" ]
    },
    "body": {
      "id": 123,
      "type": "Premium Visa",
      "addresses": [
        {
          "type": "Billing",
          "line1": "10 Random St"
        }
      ]
    }    
  },
  "verifyMode": "STRICT"
}

and run it simply by pointing to the above JSON/YAML file from a JUnit @Test method.

   @Test
   @Scenario("test_customer_get_api.yml")
   public void getCustomer_happyCase(){
        // No code goes here. This remains empty.
   }

Looks simple n easy? Why not give it a try? Visit the quick-start guide or user’s guide for more insight.

Zerocode is used by many companies such as Vocalink, HSBC, HomeOffice(Gov) and many others to achieve accurate production drop of their microservices. Learn more about Validators Vs Matchers here.

Happy testing! 🐼