DEV Community

Bruno Enrique ANCCO SUAÑA
Bruno Enrique ANCCO SUAÑA

Posted on

Applying API Testing Frameworks real world examples

API testing is essential for ensuring the reliability and performance of web services. Various frameworks facilitate this process, each offering unique features and capabilities. This article explores several prominent API testing frameworks, providing real-world code examples to illustrate their usage. Top 10 API Testing Tools for REST & SOAP Services

1. Rest-Assured (Java)

Rest-Assured is a Java-based library that simplifies testing RESTful APIs. Its syntax is expressive and BDD-like, making tests readable and maintainable.

Example:

  • This test sends a GET request to retrieve a post and asserts that the response has a status code of 200 and the userId is 1.
import io.restassured.RestAssured;
import org.junit.Test;
import static org.hamcrest.Matchers.*;

public class ApiTest {
    @Test
    public void testApiResponse() {
        RestAssured.given()
            .baseUri("https://jsonplaceholder.typicode.com")
        .when()
            .get("/posts/1")
        .then()
            .statusCode(200)
            .body("userId", equalTo(1));
    }
}
Enter fullscreen mode Exit fullscreen mode

2. Karate (Java)

Karate is an open-source framework that combines API test automation, mocks, performance testing, and UI automation into a single framework. It uses a domain-specific language (DSL) to write tests in a readable format.

Example:

  • This feature file defines a scenario that sends a GET request and validates the response.
Feature: API Test

  Scenario: Validate API Response
    Given url 'https://jsonplaceholder.typicode.com/posts/1'
    When method GET
    Then status 200
    And match response.userId == 1
Enter fullscreen mode Exit fullscreen mode

3. Postman (JavaScript)

Postman is a popular tool for API development and testing. It allows writing tests in JavaScript within its interface.

Example:

  • These tests check that the response status is 200 and that the response body contains a userId property.
pm.test("Status code is 200", function () {
    pm.response.to.have.status(200);
});

pm.test("Response has userId", function () {
    var jsonData = pm.response.json();
    pm.expect(jsonData).to.have.property("userId");
});
Enter fullscreen mode Exit fullscreen mode

4. PyRestTest (Python)

PyRestTest is a Python-based REST API testing tool that uses YAML for test case definitions. It's suitable for simple test scenarios.

Example:

  • This YAML file defines a test that sends a GET request to /users and validates the response status code and schema.
- config:
    - testset: "User API Tests"
    - base_url: "https://api.example.com"

- test:
    - name: "Get users"
    - url: "/users"
    - method: "GET"
    - headers: {'Content-Type': 'application/json'}
    - validators:
        - compare: {header: "status_code", comparator: "eq", expected: 200}
        - json_schema: {schema: {type: "array"}}
Enter fullscreen mode Exit fullscreen mode

5. JMeter (Java)

Apache JMeter is primarily used for performance testing but also supports functional API testing. It allows creating test plans with various samplers and assertions.

Example:

  • This JMeter test plan sends a GET request to /users and asserts that the first user's id is 1.
<HTTPSamplerProxy>
  <stringProp name="HTTPSampler.domain">api.example.com</stringProp>
  <stringProp name="HTTPSampler.path">/users</stringProp>
  <stringProp name="HTTPSampler.method">GET</stringProp>
  <HeaderManager>
    <collectionProp name="HeaderManager.headers">
      <elementProp name="">
        <stringProp name="Header.name">Content-Type</stringProp>
        <stringProp name="Header.value">application/json</stringProp>
      </elementProp>
    </collectionProp>
  </HeaderManager>
  <JSONPathAssertion>
    <stringProp name="JSON_PATH">$[0].id</stringProp>
    <stringProp name="EXPECTED_VALUE">1</stringProp>
    <boolProp name="JSONVALIDATION">true</boolProp>
  </JSONPathAssertion>
</HTTPSamplerProxy>
Enter fullscreen mode Exit fullscreen mode

Conclusion

Selecting the appropriate API testing framework depends on various factors, including the programming language, project requirements, and team expertise. Rest-Assured and Karate are excellent choices for Java developers, Postman offers a user-friendly interface for quick tests, PyRestTest is suitable for Python projects, and JMeter is ideal for performance testing scenarios.
By leveraging these frameworks, teams can ensure their APIs are robust, reliable, and meet the desired specifications.

Top comments (0)

Some comments may only be visible to logged-in visitors. Sign in to view all comments.