Explicación detallada de las pruebas de API usando Pytest en la práctica de automatización de Python

9cbc19c2690b4d83b49f5f78cb26ebdd.jpg


 

descripción general

 

Cada vez que la API se prueba manualmente, se deben ingresar los mismos datos repetidamente y se deben ejecutar múltiples casos de prueba, lo cual es muy tedioso y aburrido. Entonces, ¿hay alguna manera de que pueda probar su API de manera más eficiente? ¡Pruebas automatizadas de Pytest! Hoy, el editor le presentará cómo usar Pytest para pruebas automatizadas de API.


 

¿Qué son las pruebas de API?

La prueba de API es un método de prueba de software utilizado para probar las interfaces de programación de aplicaciones (API) para garantizar su funcionalidad, confiabilidad, rendimiento y seguridad. A diferencia de otros tipos de pruebas de software, las pruebas de API se centran principalmente en la funcionalidad y el rendimiento de la API en lugar de la funcionalidad y el rendimiento de toda la aplicación. Las pruebas de API pueden ayudar a los desarrolladores y probadores a probar las API de forma rápida y precisa, mejorando así la eficiencia del desarrollo y la calidad del software.

Marco Pytest

Pytest es un marco de prueba de Python popular para escribir y ejecutar pruebas. Pytest tiene una sintaxis simple y fácil de usar que facilita la escritura de varios tipos de pruebas, incluidas las pruebas unitarias, las pruebas de integración y las pruebas de API. Pytest también proporciona muchas funciones útiles, como el descubrimiento automático de pruebas, la repetición de pruebas, el filtrado de pruebas y los informes de pruebas.

Pruebas de API con Pytest

A continuación, le mostraré cómo usar el marco Pytest para las pruebas de API. Tomaré el ejemplo de probar una API simple que toma dos números y devuelve su suma. Escribiremos un caso de prueba para probar la API.

Primero, necesitamos instalar el marco Pytest. Ingrese el siguiente comando en la terminal para instalar Pytest:

pip install pytest

Necesitamos escribir un caso de prueba. En este caso de prueba, usaremos la biblioteca de solicitudes de Python para enviar solicitudes a la API y usar aserciones para verificar que la respuesta de la API sea correcta. Aquí está el código fuente del caso de prueba:

import requests

def test_addition():
    url = "http://localhost:5000/add"
    data = {"num1": 2, "num2": 3}
    response = requests.post(url, data=data)
    assert response.status_code == 200
    assert response.json() == {"result": 5}

En el código anterior, primero definimos una función de prueba llamada test_addition. La función envía una solicitud POST a la API utilizando la biblioteca de solicitudes y toma dos números como datos de entrada. Luego usamos dos aserciones para verificar que la respuesta de la API es correcta. La primera afirmación verifica que el código de estado de la respuesta sea 200, mientras que la segunda verificación verifica que los datos JSON de la respuesta sean {"resultado": 5}.

Ahora, podemos usar Pytest para ejecutar este caso de prueba. Ejecute la prueba ingresando el siguiente comando en una terminal:

pytest test_api.py

Si todo está bien, Pytest generará los resultados de la prueba y le dirá si la prueba pasó o no. Si una prueba falla, Pytest mostrará el caso de prueba fallido y un mensaje de error.

uso avanzado

1. Pruebas paramétricas

Al realizar pruebas, a menudo necesitamos probar diferentes datos de entrada. Si usamos métodos de prueba tradicionales, necesitamos escribir múltiples casos de prueba. Pero usando la función de prueba parametrizada de pytest, podemos generar automáticamente múltiples casos de prueba a través de algunos parámetros. Esto puede reducir en gran medida nuestro volumen de código y mejorar la eficiencia de las pruebas.

A continuación se muestra un ejemplo en el que usamos pruebas parametrizadas para probar múltiples conjuntos de entradas y salidas para una función de calculadora.

import pytest

@pytest.mark.parametrize("a,b,expected", [
    (1, 2, 3),
    (2, 3, 5),
    (3, 4, 7),
])
def test_add(a, b, expected):
    assert a + b == expected

En este ejemplo, usamos el decorador pytest.mark.parametrize para especificar parámetros para una prueba parametrizada. En una lista parametrizada, cada conjunto de parámetros es una tupla, que contiene los parámetros de la función y el valor de salida esperado. pytest combinará automáticamente estos parámetros en múltiples casos de prueba y los ejecutará secuencialmente.

2. Uso de accesorios

Al realizar pruebas, a menudo necesitamos crear algunos datos de prueba o un entorno de prueba, luego podemos usar la función Fixture de pytest. Fixture es una función que puede proporcionar datos de prueba o un entorno de prueba, y podemos usarla a través de decoradores en casos de prueba.

El siguiente es un ejemplo, usamos Fixture para crear un entorno de prueba y luego probamos.

import pytest

@pytest.fixture
def setup_environment():
    # 创建测试环境
    env = {'name': 'test'}
    yield env
    # 清理测试环境
    del env

def test_env(setup_environment):
    assert setup_environment['name'] == 'test'

En este ejemplo, usamos el decorador @pytest.fixture para definir la función setup_environment como Fixture. En esta función podemos crear el entorno de prueba y devolverlo en la declaración de rendimiento. En el caso de prueba, podemos usar Fixture a través del nombre del parámetro, y pytest pasará automáticamente el valor de retorno del Fixture al caso de prueba.

3. Complementos personalizados

pytest tiene muchos complementos integrados que pueden ayudarnos a completar algunas tareas de prueba comunes. Pero en el uso real, a menudo necesitamos más funciones. En este momento, podemos usar el mecanismo de complemento de pytest para personalizar el complemento para satisfacer nuestras necesidades.

El siguiente es un ejemplo, usamos el mecanismo de complemento de pytest para personalizar un complemento para generar información antes de que se ejecute el caso de prueba.

import pytest

@pytest.hookimpl(tryfirst=True)
def pytest_runtest_logstart(nodeid):
    print(f"Running test {nodeid}...")

def test_example():
    assert 1 + 1 == 2

En este ejemplo, usamos el decorador @pytest.hookimpl para definir la función pytest_runtest_logstart como complemento. En esta función, generamos la ID del caso de prueba. Antes de que se ejecute el caso de prueba, pytest llamará automáticamente a este complemento y generará información.

 

Resumen técnico

Este artículo presenta el concepto de pruebas de API y detalla cómo usar el marco Pytest para las pruebas de API. Espero que este artículo pueda ayudarlo a comprender mejor las pruebas de API y cómo usar las pruebas automatizadas de Python para mejorar la eficiencia de las pruebas y la calidad del software. Al mismo tiempo, espero que pueda aprender a escribir y ejecutar casos de prueba de API a través de este ejemplo y una breve introducción al marco Pytest.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Supongo que te gusta

Origin blog.csdn.net/Rocky006/article/details/132131132
Recomendado
Clasificación