¿Qué es Schemathesis? Pruebas de API basadas en propiedades desde tu especificación OpenAPI

¿Qué es Schemathesis? Una herramienta de prueba de API basada en propiedades que convierte su especificación OpenAPI o GraphQL en miles de pruebas de casos extremos a través de st run.

Ashley Innocent

Ashley Innocent

24 June 2026

¿Qué es Schemathesis? Pruebas de API basadas en propiedades desde tu especificación OpenAPI

Apidog para empresas

Despliegue local

SSO & RBAC

Conforme con SOC 2

Explorar Apidog Enterprise

Si tienes un esquema OpenAPI o GraphQL, Schemathesis puede convertirlo en miles de casos de prueba sin que escribas una sola aserción. Lee la especificación, genera entradas válidas y "salvajes", las dispara a tu API e informa dónde las respuestas rompen el contrato. Esta guía explica qué es Schemathesis, cómo instalarlo y ejecutarlo, qué significa realmente las pruebas basadas en propiedades y cómo encaja junto a un flujo de trabajo de pruebas funcionales y de contrato en Apidog.

botón

¿Qué es Schemathesis?

Schemathesis es una herramienta de Python de código abierto que genera pruebas de API automáticamente a partir de un esquema. Lo apuntas a una definición OpenAPI o GraphQL, y construye casos de prueba a partir de los tipos, formatos y restricciones que ya declaraste. Está construido sobre Hypothesis, la biblioteca de pruebas basada en propiedades para Python, y se distribuye bajo la licencia MIT.

La idea central es simple. Tu especificación ya describe cómo deben ser una solicitud y una respuesta válidas. Schemathesis trata esa descripción como una fuente de verdad y verifica si tu API en ejecución realmente la respeta. Cuando la API devuelve un 500, envía una respuesta que viola el esquema declarado o acepta una entrada que debería haber rechazado, Schemathesis lo señala.

Lo ejecutas desde la línea de comandos con schemathesis run (o el alias más corto st run). También hay una integración de Python si deseas ejecutarlo desde pytest en lugar de la CLI. La mayoría de los equipos comienzan con la CLI porque casi no necesita configuración.

Qué significan las pruebas basadas en propiedades

La mayoría de las pruebas de API se basan en ejemplos. Escribes una solicitud, afirmas una respuesta específica y la prueba pasa o falla en ese único caso. Eso es útil, pero solo detectas los errores para los que pensaste escribir una prueba.

Las pruebas basadas en propiedades invierten el enfoque. En lugar de un ejemplo fijo, describes una propiedad que siempre debería cumplirse, y luego dejas que la herramienta genere cientos de entradas para intentar romperla. Para Schemathesis, la propiedad es, en esencia: "ninguna solicitud válida debería colapsar el servidor ni producir una respuesta que viole el esquema".

Schemathesis genera entradas a partir de las restricciones de tu especificación. Si un campo es un número entero con un mínimo de 1, intentará con 1, números grandes, valores límite y los tipos de entradas que hacen fallar la validación ingenua. Cuando una prueba falla, Hypothesis reduce la entrada al caso más pequeño que aún reproduce el error, de modo que obtienes una reproducción mínima y legible en lugar de una carga útil aleatoria de 4 KB.

Esto es diferente del monkey testing, que lanza entradas aleatorias a una interfaz para ver qué falla. Las pruebas basadas en propiedades son estructuradas. Utiliza el esquema para generar entradas que son plausibles y dirigidas, y sabe cómo debe ser un resultado correcto porque la especificación se lo indicó.

Instalación y ejecución de Schemathesis

Schemathesis es un paquete de Python, por lo que necesitas Python 3 y pip. Instálalo de la forma habitual:

pip install schemathesis

También puedes ejecutarlo sin una instalación permanente usando uvx schemathesis si tienes uv configurado. Una vez instalado, el comando básico apunta a un esquema y a una URL base:

st run http://127.0.0.1:8000/openapi.json

Si tu esquema se encuentra en el disco en lugar de detrás de una URL, pasa la ruta del archivo e indica a Schemathesis dónde se encuentra la API en vivo:

st run ./openapi.yaml --url http://127.0.0.1:8000

Para una API autenticada, añade una cabecera:

st run http://127.0.0.1:8000/openapi.json \
  --header 'Authorization: Bearer your-token'

Schemathesis descubre cada operación en la especificación, genera casos para cada una e imprime un resumen de qué comprobaciones pasaron y cuáles fallaron. Los fallos vienen con la solicitud exacta que envió, para que puedas reproducirlos con curl o en cualquier cliente de API. Los nombres de las banderas y los valores predeterminados cambian entre versiones principales, así que consulta st run --help con tu versión instalada en lugar de confiar en un fragmento de blog, incluido este.

Qué detecta Schemathesis

Las comprobaciones predeterminadas apuntan a la brecha entre lo que promete tu especificación y lo que hace tu servidor. Esto es lo que tiende a aparecer.

Problema Cómo se ve
Errores del servidor Una solicitud activa un 500 en lugar de un 4xx manejado o una respuesta válida
Violaciones de esquema El cuerpo de la respuesta no coincide con el esquema que declaraste para ese código de estado
Discrepancias de código de estado La API devuelve un código de estado que la especificación nunca documentó
Desviación del tipo de contenido El tipo de contenido de la respuesta no coincide con lo que anuncia la especificación
Errores con estado Una operación funciona sola pero falla dentro de un flujo de trabajo realista de varios pasos

Ese último punto merece una mirada más cercana. Schemathesis puede ejecutar pruebas con estado, donde encadena operaciones basándose en enlaces de tu especificación, por ejemplo, crear un recurso, luego obtenerlo y luego eliminarlo. Los errores que solo aparecen en secuencia, como un recurso que informa un estado incorrecto después de una actualización, son difíciles de encontrar con pruebas de solicitud única. La fase con estado impulsa esas secuencias como una máquina de estados.

Puedes extender el comportamiento predeterminado con hooks (ganchos). Los hooks son funciones de Python que te permiten personalizar la generación de datos, añadir tus propias comprobaciones o filtrar qué operaciones se prueban. Así es como los equipos adaptan Schemathesis a las API con flujos de autenticación o restricciones no obvias que la especificación no puede expresar.

Cuándo usar Schemathesis

Schemathesis se gana su lugar cuando tienes una especificación OpenAPI o GraphQL razonablemente precisa y deseas una cobertura amplia y económica de casos extremos. Es fuerte para encontrar los fallos para los que nunca escribirías una prueba manual: entradas no manejadas, formas de error no documentadas y desviación de contrato entre la especificación y la implementación.

Es una buena opción cuando:

Es menos adecuado cuando tu especificación es escasa o está desactualizada, ya que Schemathesis solo puede probar lo que describe el esquema. "Basura entra, basura sale". Tampoco reemplazará tus pruebas funcionales basadas en ejemplos. Saber que un endpoint nunca falla no es lo mismo que saber que devuelve el valor correcto para una entrada conocida. Quieres ambas cosas.

Schemathesis y Apidog: dónde encaja cada uno

Apidog y Schemathesis resuelven problemas diferentes y funcionan bien juntos. Apidog es una plataforma todo en uno para diseñar, depurar, probar, simular y documentar APIs. Schemathesis es un fuzzer basado en propiedades enfocado. Ser honesto sobre el límite es importante aquí.

Apidog no realiza fuzzing basado en propiedades. Su característica adyacente más cercana es el monkey testing, que envía entradas aleatorias para detectar fallos. Eso es útil, pero no es lo mismo que las pruebas basadas en propiedades impulsadas por esquemas. Schemathesis genera entradas a partir de las restricciones de tu especificación y verifica las respuestas contra el esquema. Así que, si el fuzzing basado en propiedades es lo que necesitas, recurre a Schemathesis, no a Apidog.

Donde Apidog encaja es en el resto del ciclo de vida en torno a esa pasada de fuzzing.

Etapa del flujo de trabajo Schemathesis Apidog
Fuzzing basado en propiedades a partir de una especificación Sí, característica principal No
Diseño visual de API y edición de especificaciones No
Pruebas funcionales basadas en ejemplos Limitado Sí, constructor visual de pruebas
Pruebas de contrato contra una especificación Parcial, mediante comprobaciones de esquema Sí, flujo de trabajo dedicado
Servidores mock a partir de un esquema No Sí, mock inteligente
Ejecutor de pruebas de CI Sí, st run Sí, apidog run
Documentación auto-generada No

Una combinación práctica se ve así. Diseñas y mantienes la especificación en Apidog, generas casos de prueba funcionales y un servidor mock a partir de ella, y los ejecutas en CI con apidog run. Luego añades una pasada de Schemathesis que realiza fuzzing sobre la misma especificación para detectar fallos en casos extremos y violaciones de contrato. Las dos capas detectan diferentes clases de errores. Apidog confirma que la API hace lo correcto para casos conocidos; Schemathesis busca los casos desconocidos que la rompen.

Si tu objetivo es convertir una especificación en una suite funcional ejecutable en lugar de una ejecución de fuzzing, Apidog puede generar colecciones de pruebas de API directamente a partir de tus especificaciones OpenAPI, y puedes descargar Apidog para probar ese flujo.

Preguntas frecuentes

¿Es Schemathesis gratuito?

Sí. Schemathesis es de código abierto bajo la licencia MIT, y la CLI es gratuita para instalar y ejecutar a través de pip install schemathesis. También existe una oferta comercial alojada para equipos que desean una experiencia gestionada, pero la herramienta principal que ejecutas localmente y en CI no cuesta nada.

¿Cuál es la diferencia entre schemathesis run y st run?

Son el mismo comando. st es un alias corto para schemathesis, por lo que st run y schemathesis run hacen exactamente lo mismo. Usa el que prefieras. Ambos aceptan una ruta o URL de esquema más opciones como --url y --header.

¿Puede Schemathesis reemplazar mis pruebas funcionales de API?

No, y no está diseñado para eso. Schemathesis comprueba que tu API no falle y que las respuestas coincidan con el esquema. No verifica la lógica de negocio, como si un cálculo de descuento es correcto. Para eso, sigues necesitando pruebas funcionales basadas en ejemplos y pruebas de contrato, las cuales puedes construir y ejecutar en Apidog. Trata Schemathesis como una capa de fuzzing adicional, no como un reemplazo.

¿Funciona Schemathesis con GraphQL?

Sí. Schemathesis es compatible con esquemas OpenAPI y GraphQL. Para GraphQL, genera consultas a partir de las definiciones de tipos del esquema y verifica las respuestas de la misma manera que lo hace para las API REST definidas en OpenAPI.

Conclusión

Schemathesis es una herramienta potente para un solo trabajo: tomar tu especificación OpenAPI o GraphQL y someter a tu API en vivo a pruebas de estrés con generación basada en propiedades. Encuentra los fallos y las violaciones de contrato que las pruebas basadas en ejemplos pasan por alto, y no te cuesta casi nada añadirlo a tu CI. Lo que no hace es diseñar, simular, documentar o verificar la lógica de negocio.

Ahí es donde Apidog lo complementa. Diseña la especificación, genera pruebas funcionales y mocks, ejecútalos en CI con apidog run, y documenta el resultado, todo en un solo lugar, luego añade Schemathesis para el fuzzing. Descarga Apidog para construir el lado de diseño y funcional de ese flujo de trabajo, y deja que Schemathesis se encargue de la búsqueda de casos extremos.

botón

Practica el diseño de API en Apidog

Descubre una forma más fácil de construir y usar APIs