Curso GRATIS de Karate Framework para Automatización de APIs | Aprende desde Cero en YouTube

Karate Framework desde Cero: Tutorial Completo de Instalación y Primeras Pruebas

✍️ Jorge Escorcia📅 Abril 2026🏷️ TUTORIAL⏱️ 12 min de lectura

Cuando empecé a aprender automatización de APIs, lo primero que me frustraba era la cantidad de código Java que necesitaba para hacer algo tan simple como validar una respuesta JSON. Fue entonces cuando descubrí Karate Framework — y desde el primer día cambió completamente mi forma de trabajar.

En este tutorial voy a mostrarte exactamente cómo instalé Karate en mi máquina, cómo configuré mi primer proyecto desde cero y cómo escribí mis primeras pruebas funcionales de API. Sin rodeos, con ejemplos reales que puedes copiar y ejecutar hoy mismo.

💡 ¿Ya sabes qué es Karate pero quieres ir directo a la práctica? Si quieres repasar los conceptos antes de seguir, tengo una guía introductoria: Karate Framework: Automatización de APIs Simple y Efectiva.

Requisitos Previos

Antes de comenzar, necesitas tener instalado en tu máquina:

  • Java JDK 11 o superior — Karate corre sobre la JVM
  • Maven 3.6+ o Gradle 7+ — para gestionar dependencias
  • IntelliJ IDEA (recomendado) o cualquier IDE con soporte Java

Para verificar que tienes Java instalado, abre la terminal y ejecuta:

TERMINAL

java --version
# Deberías ver algo como: openjdk 17.0.x o java 11.0.x

mvn --version
# Deberías ver: Apache Maven 3.x.x

Si no tienes Java instalado, descárgalo desde adoptium.net — es gratuito y funciona en Windows, macOS y Linux.

Paso 1 — Crear el Proyecto Maven

Vamos a crear el proyecto usando el arquetipo estándar de Maven. Abre tu terminal y ejecuta:

TERMINAL

mvn archetype:generate \
  -DgroupId=com.mundoqa.tests \
  -DartifactId=karate-api-tests \
  -DarchetypeArtifactId=maven-archetype-quickstart \
  -DarchetypeVersion=1.4 \
  -DinteractiveMode=false

Esto crea una carpeta llamada karate-api-tests con la estructura base de Maven. Ábrela en IntelliJ IDEA.

Paso 2 — Agregar la Dependencia de Karate al pom.xml

Abre el archivo pom.xml en la raíz del proyecto y reemplaza su contenido por este:

pom.xml

<project>
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.mundoqa.tests</groupId>
  <artifactId>karate-api-tests</artifactId>
  <version>1.0-SNAPSHOT</version>

  <properties>
    <maven.compiler.source>11</maven.compiler.source>
    <maven.compiler.target>11</maven.compiler.target>
    <karate.version>1.4.1</karate.version>
  </properties>

  <dependencies>
    <dependency>
      <groupId>com.intuit.karate</groupId>
      <artifactId>karate-junit5</artifactId>
      <version>${karate.version}</version>
      <scope>test</scope>
    </dependency>
  </dependencies>

  <build>
    <testResources>
      <testResource>
        <directory>src/test/resources</directory>
      </testResource>
      <testResource>
        <directory>src/test/java</directory>
        <excludes><exclude>**/*.java</exclude></excludes>
      </testResource>
    </testResources>
  </build>
</project>

✅ Tip de experiencia La sección <testResources> es crítica. Sin ella, Maven no incluye los archivos .feature en el classpath y las pruebas no se ejecutan. Es el error más común al configurar Karate por primera vez.

Paso 3 — Estructura de Carpetas

Karate organiza sus pruebas en archivos .feature. Crea la siguiente estructura dentro de src/test/java:

ESTRUCTURA DEL PROYECTO

karate-api-tests/
├── pom.xml
└── src/
    └── test/
        └── java/
            └── com/
                └── mundoqa/
                    ├── TestRunner.java        <-- Clase de ejecución
                    └── usuarios/
                        └── usuarios.feature   <-- Tus pruebas aquí

Paso 4 — Crear el TestRunner

El TestRunner es la clase Java que le dice a JUnit 5 que ejecute las pruebas de Karate. Crea el archivo TestRunner.java:

TestRunner.java

package com.mundoqa;

import com.intuit.karate.junit5.Karate;
import org.junit.jupiter.api.Test;

class TestRunner {

    @Test
    void testAll() {
        Karate.run().relativeTo(getClass()).call();
    }
}

Con esta configuración, Karate buscará automáticamente todos los archivos .feature en el mismo paquete y los ejecutará.

Paso 5 — Tu Primera Prueba con Karate

Ahora viene la parte divertida. Vamos a escribir pruebas reales contra una API pública. Usaré JSONPlaceholder — una API de pruebas gratuita perfecta para practicar.

Crea el archivo usuarios.feature:

usuarios.feature

Feature: Pruebas de la API de Usuarios

  Background:
    * url 'https://jsonplaceholder.typicode.com'

  Scenario: Obtener todos los usuarios
    Given path '/users'
    When method GET
    Then status 200
    And match response #array
    And match response[0].name == 'Leanne Graham'

  Scenario: Obtener un usuario por ID
    Given path '/users/1'
    When method GET
    Then status 200
    And match response.id == 1
    And match response.email == '#string'
    And match response.address == '#object'

  Scenario: Crear un nuevo usuario (POST)
    Given path '/users'
    And request { name: 'Jorge QA', username: 'jorgeqa', email: 'jorge@mundoqa.com' }
    When method POST
    Then status 201
    And match response.name == 'Jorge QA'
    And match response.id == '#number'

¿Qué está pasando en este archivo?

  • Background: Define la URL base que se reutiliza en todos los escenarios del feature. Evita repetición.
  • Given / When / Then: La sintaxis Gherkin que hace las pruebas legibles para cualquier persona del equipo.
  • match response #array: Karate valida que la respuesta sea un array JSON. No necesitas escribir código Java para eso.
  • ‘#string’ y ‘#number’: Son los “fuzzy matchers” de Karate — validan el tipo de dato sin importar el valor exacto.

Paso 6 — Ejecutar las Pruebas

Desde la terminal en la raíz del proyecto:

TERMINAL

mvn test

Karate genera automáticamente un reporte HTML detallado en:

RUTA DEL REPORTE

target/karate-reports/karate-summary.html

Ábrelo en el navegador y verás cada escenario ejecutado, el tiempo de respuesta, el cuerpo de la petición y la respuesta completa. Es uno de los reportes más completos que he visto en frameworks de testing.

✅ Lo que ves en el reporte El reporte muestra: código de estado HTTP, headers de respuesta, cuerpo JSON formateado, tiempo de ejecución por escenario y el resultado de cada assertion. Perfecto para compartir con el equipo o adjuntar a un bug report.

Paso 7 — Pruebas con Variables y Datos Dinámicos

Una de las funcionalidades más potentes de Karate es el manejo de variables entre pasos. Esto es especialmente útil para flujos que dependen de datos generados en pasos anteriores — como crear un recurso y luego consultarlo.

flujo-completo.feature

Feature: Flujo completo — crear y validar post

  Background:
    * url 'https://jsonplaceholder.typicode.com'

  Scenario: Crear un post y luego obtenerlo por ID
    # Paso 1: Crear el post
    Given path '/posts'
    And request
      """
      {
        "title": "Mi Primer Post Automatizado",
        "body": "Contenido generado por Karate Framework",
        "userId": 1
      }
      """
    When method POST
    Then status 201
    * def postId = response.id
    * print 'Post creado con ID:', postId

    # Paso 2: Consultar el post creado usando el ID guardado
    Given path '/posts/' + postId
    When method GET
    Then status 200
    And match response.id == postId

La línea * def postId = response.id extrae el ID del post recién creado y lo guarda en una variable. En el siguiente paso, usamos esa variable directamente en la URL. Así de simple.

Paso 8 — Pruebas con Múltiples Datos (Data-Driven Testing)

En QA siempre queremos probar con múltiples conjuntos de datos. Karate lo maneja con Scenario Outline:

data-driven.feature

Feature: Consultar múltiples usuarios por ID

  Background:
    * url 'https://jsonplaceholder.typicode.com'

  Scenario Outline: Validar usuario <userId>
    Given path '/users/' + <userId>
    When method GET
    Then status 200
    And match response.id == <userId>
    And match response.username == '<username>'

    Examples:
      | userId | username   |
      | 1      | Bret       |
      | 2      | Antonette  |
      | 3      | Samantha   |

Con este patrón, Karate ejecuta el mismo escenario tres veces — una por cada fila de la tabla — y genera resultados individuales para cada uno. Ideal para pruebas de regresión donde necesitas validar múltiples usuarios, productos o endpoints.

Errores Comunes al Empezar con Karate (y cómo resolverlos)

En mis primeros días con Karate cometí varios errores que me costaron horas. Aquí los más frecuentes:

ErrorCausaSolución
No tests foundFalta la sección <testResources> en el pom.xmlAgregar la configuración mostrada en el Paso 2
ClassNotFoundExceptionVersión de Java incompatible (Java 8 con Karate 1.4+)Usar Java 11 o superior
match failed en tiposComparar número con string: == "1" en vez de == 1Sin comillas para números, con comillas para strings
Feature no encontradoEl archivo .feature no está en src/test/javaMoverlo a la misma ruta del paquete Java
Reporte no generadoTests ejecutados desde IDE sin MavenUsar siempre mvn test para el reporte

Próximos Pasos: ¿A dónde ir desde aquí?

Con lo que aprendiste en este tutorial ya puedes automatizar pruebas funcionales de APIs REST básicas. Pero Karate tiene mucho más:

  • Autenticación: JWT, OAuth 2.0, API Keys — Karate los maneja de forma nativa
  • Ambientes: Configura URLs y tokens por entorno (dev, staging, prod) con karate-config.js
  • Ejecución paralela: Corre cientos de pruebas en segundos usando parallel(5)
  • Mock Servers: Karate puede simular APIs completas para pruebas de contratos
  • Integración CI/CD: Enchufa tu suite a Jenkins, GitHub Actions o Azure DevOps con un solo comando Maven

🎥 ¿Quieres ver todo esto en video? Si prefieres aprender con ejemplos visuales, el canal de Juan Pablo Gómez Monsalve tiene un curso gratuito en YouTube donde cubre Karate de forma muy didáctica. Es un recurso complementario excelente para reforzar lo que aprendiste aquí.

Conclusión

Karate Framework elimina la mayor barrera del testing de APIs: necesitar escribir Java para validar JSON. Con Gherkin, los tests se escriben rápido, se leen fácil y se mantienen sin drama.

En este tutorial configuramos un proyecto completo desde cero, escribimos pruebas GET y POST reales, manejamos variables entre pasos y aplicamos data-driven testing. Eso es exactamente lo que necesitas para empezar a automatizar APIs en proyectos reales.

Si tienes dudas sobre algún paso o quieres que cubra algún caso específico de Karate, escríbeme a contacto@mundoqa.com — con gusto te ayudo.

Posts relacionados

→ Karate Framework: Automatización de APIs Simple y Efectiva→ Testing de APIs con Bruno: Tutorial Completo→ Postman para Testing de APIs: Tutorial Paso a Paso

JEscorcia
JEscorcia