Karate Framework Tutorial

Introduction to Karate

Karate est un framework open-source basé sur Java, conçu pour les tests d'API, le mock d'API, et plus encore. Il utilise une syntaxe inspirée de Gherkin (comme Cucumber) pour écrire des tests clairs et lisibles.

Caractéristiques principales

Installation et Configuration

Prérequis

Étapes de configuration

Ajoutez Karate comme dépendance dans votre projet Maven :

<dependency>
  <groupId>com.intuit.karate</groupId>
  <artifactId>karate-apache</artifactId>
  <version>1.3.0</version> 
  <scope>test</scope>
</dependency>
    

Si vous utilisez Gradle :

testImplementation 'com.intuit.karate:karate-apache:1.3.0'
    

Créer votre premier test Karate

Étape 1 : Structure du projet

Organisez votre projet comme suit :

src/
  test/
    java/
      examples/
        api/
          sample.feature
    karate-config.js
    

Étape 2 : Fichier de configuration

Créez un fichier nommé karate-config.js pour définir les variables globales :

function() {
  return {
    baseUrl: 'https://jsonplaceholder.typicode.com'
  };
}
    

Étape 3 : Exemple de test simple

Écrivez un test dans sample.feature :

Feature: API Testing with Karate

  Scenario: Get a post by ID
    Given url baseUrl + '/posts/1'
    When method GET
    Then status 200
    And match response contains { id: 1, userId: 1 }
    

Étape 4 : Exécution du test

Exécutez le test avec Maven :

mvn test -Dtest=examples.api.sample
    

Exemples avancés

Scénarios avec variables

Scenario: Create a new post
  Given url baseUrl + '/posts'
  And request { title: 'New Post', body: 'This is a new post.', userId: 1 }
  When method POST
  Then status 201
  And match response contains { id: '#notnull' }
    

Mocking d'une API

Créez un mock server avec Karate :

Feature: Mock API

  Scenario: Mock a GET request
    Given path '/hello'
    And method GET
    Then status 200
    And response { message: 'Hello, Karate!' }
    

Performance Testing

Karate prend en charge les tests de performance via karate-gatling.

dependencies {
  implementation 'com.intuit.karate:karate-gatling:1.3.0'
}
    

Page Object Model avec Karate

Le Page Object Model peut être simulé avec des fichiers réutilisables.

Exemple de classe réutilisable

// user-api.feature
Feature: User API

  Scenario: Get a user by ID
    Given path '/users/' + userId
    When method GET
    Then status 200
    

Test principal utilisant le POM

Feature: Main Test

  Background:
    * def UserAPI = call read('classpath:examples/api/user-api.feature')
    * def userId = 1

  Scenario: Test user API
    * call UserAPI
    

Intégration avec CI/CD

  1. Ajoutez Karate à vos pipelines Jenkins ou GitHub Actions.
  2. Exportez des rapports JUnit ou HTML pour suivre les résultats.

Ressources supplémentaires

Retour à l'accueil