Las pruebas de API se han convertido en una parte crucial del desarrollo de software. A medida que el mundo se inclina más hacia los microservicios y los sistemas interconectados, garantizar que las API sean robustas y fiables es primordial. Python, con su simplicidad y amplio soporte de bibliotecas, ha surgido como un lenguaje preferido para las pruebas de API. En esta publicación, exploraremos todo lo que necesita saber sobre las pruebas de API con Python. Además, le mostraremos cómo empezar a usar Apidog de forma gratuita.
¿Qué son las pruebas de API?
Antes de sumergirnos en los detalles de las pruebas de API de Python, comprendamos lo que implican las pruebas de API. Una interfaz de programación de aplicaciones (API) es un conjunto de reglas y protocolos para construir e interactuar con aplicaciones de software. Las pruebas de API implican verificar que estas interacciones sean las esperadas. Incluye el envío de solicitudes a varios puntos finales y la validación de las respuestas con los resultados esperados.
¿Por qué Python para las pruebas de API?
Puede que se pregunte: "¿Por qué Python?". Bueno, Python es conocido por su simplicidad y legibilidad, lo que lo convierte en una opción fantástica para crear scripts de prueba. Además, Python cuenta con un rico ecosistema de bibliotecas y herramientas diseñadas para las pruebas de API. Tanto si es un desarrollador experimentado como un principiante, Python ofrece una curva de aprendizaje suave y capacidades potentes.

Primeros pasos con las pruebas de API de Python
¿Listo para sumergirse en las pruebas de API de Python? Comencemos con lo básico.
Configuración de su entorno
Primero, deberá configurar su entorno de Python. Si aún no lo ha hecho, descargue e instale Python desde el sitio web oficial. Una vez instalado, verifique la instalación ejecutando:
python --version
También deberá instalar algunas bibliotecas esenciales. Abra su terminal y ejecute:
pip install requests pytest
Comprensión de los métodos HTTP
Las API se comunican a través de métodos HTTP. Los más comunes incluyen:
- GET: Recupera datos del servidor.
- POST: Envía datos al servidor para crear un recurso.
- PUT: Actualiza un recurso existente en el servidor.
- DELETE: Elimina un recurso del servidor.
Comprender estos métodos es crucial para realizar pruebas de API eficaces.
Su primera prueba de API con Python
Escribamos nuestra primera prueba de API utilizando la biblioteca requests
.
import requests
def test_get_request():
response = requests.get('https://jsonplaceholder.typicode.com/posts/1')
assert response.status_code == 200
assert response.json()['id'] == 1
if __name__ == '__main__':
test_get_request()
print("Test Passed!")
Este sencillo script envía una solicitud GET a una API de muestra y comprueba si el estado de la respuesta es 200 y el ID de la publicación devuelta es 1.
Pruebas de API avanzadas con Pytest
Si bien los scripts simples son excelentes para comenzar, las aplicaciones del mundo real requieren marcos de prueba más robustos. Aquí es donde entra pytest
. pytest
es un potente marco de prueba que facilita la escritura de conjuntos de pruebas escalables.
Instalación y configuración de Pytest
Instale pytest
usando pip:
pip install pytest
Escribir su primera prueba de Pytest
Aquí le mostramos cómo puede integrar pytest
en sus pruebas de API:
import requests
import pytest
def test_get_request():
response = requests.get('https://jsonplaceholder.typicode.com/posts/1')
assert response.status_code == 200
assert response.json()['id'] == 1
if __name__ == '__main__':
pytest.main()
Para ejecutar sus pruebas, simplemente ejecute:
pytest
Organización de pruebas con fixtures
Los fixtures en pytest
son una forma de configurar algún contexto antes de ejecutar las pruebas. Ayudan a evitar el código repetitivo y a hacer que las pruebas sean más limpias.
import requests
import pytest
@pytest.fixture
def base_url():
return 'https://jsonplaceholder.typicode.com'
def test_get_request(base_url):
response = requests.get(f'{base_url}/posts/1')
assert response.status_code == 200
assert response.json()['id'] == 1
Prueba de diferentes métodos HTTP
Profundicemos en la prueba de varios métodos HTTP. Probar diferentes métodos garantiza que su API maneje correctamente varios tipos de solicitudes.
Prueba de solicitudes POST
Se utiliza una solicitud POST para crear un nuevo recurso. Aquí le mostramos cómo puede probarlo:
def test_post_request(base_url):
payload = {
"title": "foo",
"body": "bar",
"userId": 1
}
response = requests.post(f'{base_url}/posts', json=payload)
assert response.status_code == 201
assert response.json()['title'] == "foo"
Prueba de solicitudes PUT
Una solicitud PUT actualiza un recurso existente. Veamos un ejemplo:
def test_put_request(base_url):
payload = {
"id": 1,
"title": "foo updated",
"body": "bar updated",
"userId": 1
}
response = requests.put(f'{base_url}/posts/1', json=payload)
assert response.status_code == 200
assert response.json()['title'] == "foo updated"
Prueba de solicitudes DELETE
Finalmente, una solicitud DELETE elimina un recurso:
def test_delete_request(base_url):
response = requests.delete(f'{base_url}/posts/1')
assert response.status_code == 200
Manejo de la autenticación en las pruebas de API
Muchas API requieren autenticación. Esta sección cubrirá cómo manejar diferentes métodos de autenticación.
Autenticación básica
La autenticación básica requiere un nombre de usuario y una contraseña codificados en el encabezado de la solicitud.
def test_basic_auth():
response = requests.get('https://api.example.com/secure-endpoint', auth=('user', 'pass'))
assert response.status_code == 200
Autenticación basada en tokens
La autenticación basada en tokens utiliza un token, normalmente en el encabezado, para autenticar las solicitudes.
def test_token_auth():
token = 'your_token_here'
headers = {'Authorization': f'Bearer {token}'}
response = requests.get('https://api.example.com/secure-endpoint', headers=headers)
assert response.status_code == 200
Manejo de errores en las pruebas de API
Manejar los errores con elegancia es crucial en las pruebas de API. Esto garantiza que su API responda correctamente a las solicitudes no válidas.
Prueba de errores 404
Un error 404 indica que no se encontró el recurso solicitado.
def test_404_error(base_url):
response = requests.get(f'{base_url}/posts/999999')
assert response.status_code == 404
Prueba de errores 400
Un error 400 indica una solicitud incorrecta, a menudo debido a una entrada no válida.
def test_400_error(base_url):
response = requests.post(f'{base_url}/posts', json={})
assert response.status_code == 400
Automatización de las pruebas de API
Automatizar sus pruebas de API puede ahorrar tiempo y garantizar la coherencia. Puede configurar canalizaciones de integración continua (CI) para ejecutar sus pruebas automáticamente.
Uso de GitHub Actions para CI
GitHub Actions es una potente herramienta de CI/CD. Aquí hay una configuración simple para ejecutar sus pruebas pytest
:
Cree un archivo .github/workflows/python-app.yml
con el siguiente contenido:
name: Python application
on: [push]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Set up Python
uses: actions/setup-python@v2
with:
python-version: '3.x'
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install pytest requests
- name: Run tests
run: |
pytest
Esta configuración ejecutará sus pruebas cada vez que envíe código a su repositorio.
Herramientas y bibliotecas para las pruebas de API
Varias herramientas y bibliotecas pueden hacer que su proceso de prueba de API sea más eficiente. Aquí hay algunas populares:
Apidog
Apidog es una herramienta integral de desarrollo y prueba de API que proporciona una plataforma colaborativa para la documentación, prueba y depuración de API. Se integra a la perfección con varias etapas del ciclo de vida de la API, lo que la convierte en una herramienta invaluable para los desarrolladores.
Postman
Postman es una potente herramienta de prueba de API con una interfaz fácil de usar. Puede crear, administrar y automatizar pruebas utilizando Postman.
Requests
La biblioteca requests
en Python es perfecta para realizar solicitudes HTTP y manejar respuestas.
Pytest
pytest
es un marco de prueba robusto que simplifica la escritura y ejecución de pruebas.
Responses
La biblioteca responses
le permite simular respuestas de API con fines de prueba.
Locust
Locust es una herramienta de prueba de rendimiento que le ayuda a identificar problemas de rendimiento en sus API.
Integración de Apidog para pruebas de API sin problemas
¿Recuerda nuestra mención de Apidog al principio? Echemos un vistazo más de cerca a cómo esta herramienta puede simplificar su proceso de prueba de API.
¿Por qué Apidog?
Apidog es una plataforma API todo en uno que proporciona herramientas para diseñar, probar y documentar API. Está diseñado para optimizar todo el ciclo de vida del desarrollo de API, lo que facilita a los desarrolladores la creación de API fiables y bien documentadas.
Características clave de Apidog
- Diseño de API: cree y administre sus especificaciones de API con una interfaz intuitiva.
- Pruebas de API: cree y ejecute fácilmente pruebas automatizadas para sus API.
- Documentación de API: genere y mantenga una documentación completa de la API.
- Colaboración: trabaje sin problemas con su equipo en proyectos de API.
Cómo enviar una solicitud de API de Python usando Apidog
- Abra Apidog y haga clic en el botón "Nueva solicitud" para crear una nueva solicitud.

2. Seleccione "GET" como método de la solicitud.

3. Ingrese la URL del punto final de la API

Luego haga clic en el botón "Enviar" para enviar la solicitud a la API.

Como puede ver, Apidog le muestra la URL, los parámetros, los encabezados y el cuerpo de la solicitud, y el estado, los encabezados y el cuerpo de la respuesta. También puede ver el tiempo de respuesta, el tamaño y el formato de la solicitud y la respuesta, y compararlos con diferentes API web.
Cómo realizar pruebas de automatización de Python usando Apidog
Aquí hay una guía paso a paso sobre cómo automatizar las pruebas de API usando Apidog:
Abra su proyecto Apidog y cambie a la interfaz de prueba

Diseñe sus escenarios de prueba: puede diseñar sus escenarios de prueba en Apidog.

Ejecute sus pruebas: puede ejecutar sus pruebas en Apidog.

Analice los resultados de las pruebas y optimice: después de ejecutar sus pruebas, puede analizar los resultados de las pruebas y optimizar sus pruebas en consecuencia.

Recuerde, Apidog es un conjunto de herramientas todo en uno para el desarrollo de API. Todo el equipo puede trabajar en él en conjunto para producir API de manera eficiente y conveniente. Cada rol en el equipo puede usarlo para resolver sus propios problemas.
Mejores prácticas para las pruebas de API
Para concluir, aquí hay algunas mejores prácticas para las pruebas de API:
Utilice nombres de prueba claros y descriptivos
Los nombres de sus pruebas deben describir claramente lo que están probando. Esto facilita la comprensión de lo que salió mal cuando falla una prueba.
Pruebe escenarios tanto positivos como negativos
Asegúrese de probar tanto las entradas válidas como las no válidas para cubrir todos los escenarios posibles.
Simule servicios externos
Al probar API que dependen de servicios externos, utilice la simulación para simular estas dependencias. Esto garantiza que sus pruebas sean fiables y no fallen debido a problemas con los servicios externos.
Mantenga un código limpio y organizado
Mantenga su código de prueba limpio y organizado. Utilice fixtures, funciones auxiliares y una estructura adecuada para mantener la legibilidad y la capacidad de gestión.
Conclusión
Las pruebas de API con Python son potentes y sencillas. Con herramientas como requests
y pytest
, puede escribir pruebas integrales que garanticen que sus API sean robustas y fiables. Al seguir las mejores prácticas y aprovechar la automatización, puede optimizar su proceso de prueba y ofrecer software de alta calidad.
¡Felices pruebas!