Introducción
Como ingeniero de soporte o de control de calidad/pruebas, es importante garantizar la calidad y la fiabilidad de su código. Una forma de lograrlo es utilizar frameworks de pruebas de Python para automatizar el proceso de pruebas e identificar errores o problemas en su código antes de lanzar o implementar el software.
Ofrecen los siguientes beneficios:
- Los marcos de prueba mejoran la calidad del código.
- Las pruebas automatizadas ahorran tiempo y esfuerzo.
- La reutilización del código optimiza los esfuerzos de prueba y reduce la repetición.
- Los marcos de prueba de Python se integran perfectamente con otras herramientas, módulos y bibliotecas.
En esta guía paso a paso, aprenderá cómo implementar PyTest, uno de los marcos de prueba de Python más populares.
Requisitos previos
Antes de entrar en los detalles de los marcos de prueba de Python, centrémonos primero en los requisitos previos para implementar PyTest.
- Instalación de Python: Asegúrate de tener Python instalado en tu sistema. Puedes descargar la última versión de Python desde el sitio web oficial.
- Instalar Pip: Pip (Instalador de Paquetes para Python) es una herramienta para administrar paquetes, bibliotecas y dependencias en Python. Permite instalar y administrar paquetes de Python. Asegúrate de tener pip instalado en tu sistema.
Puede comprobar si pip está instalado ejecutando el siguiente comando en su línea de comandos/terminal:
python -m pip --versionO
python3 -m pip --version¿Qué es un marco de pruebas de Python?
Un framework de pruebas de Python es un conjunto de herramientas y bibliotecas que proporciona la estructura y las directrices para escribir y ejecutar pruebas en Python para la automatización de pruebas. Garantiza que el código cumpla con los estándares de calidad deseados. Es esencial y útil para desarrolladores backend, ingenieros de software, DevOps e ingenieros de control de calidad y pruebas. Algunos de los frameworks de pruebas de Python más conocidos y utilizados son Pytest, PyUnit, DocTest, Testify, Robot y muchos más.
Implementación de PyTest
Instalación de PyTest
Para empezar a usar PyTest, necesitas instalarlo en tu sistema. Abre tu terminal y ejecuta el siguiente comando:
pip install pytestEste comando descargará e instalará la última versión de PyTest y sus dependencias.
Escribir elementos de prueba
Ahora que PyTest está instalado, comencemos a escribir algunos casos de prueba unitaria básicos.
Cree un nuevo archivo Python y asígnele un nombre prueba_backend.py Este archivo define nuestros casos de prueba utilizando la sintaxis de PyTest.
Nota: De forma predeterminada, PyTest detecta y ejecuta todos los casos de prueba en archivos cuyos nombres empiezan por "test_" o terminan por "_test". El proceso de detección de PyTest escanea recursivamente la carpeta actual y sus subcarpetas en busca de archivos que empiecen por "test_" o terminen por "_test". A continuación, se ejecutan las pruebas en esos archivos.
import pytest
def test_addition():
assert 3 + 3 == 6
def test_subtraction():
assert 5 - 4 == 1
def test_multiplication():
assert 4 * 4 == 16
def test_division():
assert 10 / 2 == 5En el ejemplo anterior, definimos cuatro pruebas unitarias básicas como funciones: prueba_suma, prueba_resta, prueba_multiplicación y prueba_división. La palabra clave assert se utiliza al depurar código y permite comprobar si una condición específica del código devuelve "True". De lo contrario, devuelve un AssertionError.
Ejecutar casos de prueba, ejecutar pruebas específicas
Para ejecutar las pruebas, vaya a la carpeta donde guardó el archivo test_backend.py y luego ejecute el siguiente comando en su terminal o línea de comando:
pytestO
python -m pytestProducción:
Output
test session starts
==================================================
platform darwin -- Python 3.9.6, pytest-7.4.3, pluggy-1.3.0
rootdir: ~/Python Testing Frameworks
collected 4 items
test_backend.py ....
==================================================
4 passed in 0.01s Al usar PyTest, no es necesario ejecutar manualmente cada prueba en el archivo. La herramienta encontrará y ejecutará automáticamente todos los casos de prueba definidos. Si todo funciona correctamente y todas las afirmaciones son correctas, obtendrá un buen resumen de los resultados de las pruebas junto con el número de pruebas superadas, como se muestra arriba.
Supongamos que una de las pruebas falla en ese momento, vemos el siguiente resultado:
Output
test session starts
==================================================
platform darwin -- Python 3.9.6, pytest-7.4.3, pluggy-1.3.0
rootdir: ~/Python Testing Frameworks
collected 4 items
test_backend.py ...F
================================================== [100%]
FAILURES
==================================================
test_division
def test_division():
> assert 10 / 2 == 6
E assert (10 / 2) == 6
test_backend.py:13: AssertionError
short test summary info
==================================================
FAILED test_backend.py::**test_division** - assert (10 / 2) == 6
1 failed, 3 passed in 0.01s
Descubrimiento experimental
PyTest ofrece potentes funciones de descubrimiento de pruebas que le permiten organizar sus casos de prueba de forma estructurada. De forma predeterminada, PyTest descubre y ejecuta todos los casos de prueba en archivos cuyos nombres empiezan por "test_" o terminan por "_test". Sin embargo, puede personalizar el proceso de descubrimiento de pruebas mediante diversas opciones de línea de comandos o configurando un archivo. pytest.ini Personalizar.
Por ejemplo, puede especificar un directorio específico para buscar módulos de prueba ejecutando el siguiente comando:
pytest tests/Este comando solo ejecutará los casos de prueba en el directorio “pruebas”.
Equipo de prueba
Las herramientas de prueba de PyTest son componentes increíbles que se pueden reutilizar para establecer una base consistente para los casos de prueba. Son útiles para crear prerrequisitos y liberar recursos una vez finalizadas las pruebas. PyTest facilita la definición y el uso de herramientas de prueba de forma impecable.
Para definir un elemento de prueba, debes utilizar el decorador. @pytest.fixture Por ejemplo, una variable llamada db, definida a continuación, abrirá una conexión a la base de datos y la cerrará tras la operación. Podemos definir esta variable como sigue:
import pytest
@pytest.fixture
def db():
# Set up the database connection
db = create_db()
yield db
# Clean up the database connection
db.close()En este ejemplo, la sentencia yield define el código que se ejecutará tras la ejecución de los casos de prueba. La palabra clave yield se utiliza para controlar el flujo de una función generadora, de forma similar a la sentencia return, que se utiliza para devolver valores en Python.
Para utilizar un elemento fijo en una prueba, debes pasarlo como argumento a la función de prueba.
Por ejemplo:
def query_test(db):
results = db.query("SELECT * FROM users")
assert len(result) == 12En este caso de prueba, el accesorio base de datos Funcionamiento automático prueba_de_consulta() Se inyecta y permite realizar operaciones con bases de datos. Los fixtures son útiles para que los desarrolladores preparen entornos de prueba específicos, como conexiones a bases de datos, clientes API u objetos simulados. Con ellos, los desarrolladores pueden garantizar que las pruebas sean aisladas y repetibles.
Los ingenieros de pruebas también pueden utilizar equipos para preparar el sistema bajo prueba, gestionar datos de prueba o simular escenarios complejos.
Además, los dispositivos se pueden utilizar para limpiar recursos después de las pruebas, mejorar la confiabilidad y mantener el conjunto de pruebas.
Resultado
En este tutorial, aprendimos a implementar y usar PyTest, uno de los frameworks de pruebas de Python más populares y con más funciones, y proporcionamos una guía paso a paso para implementarlo en Python. Escribir y actualizar continuamente los casos de prueba es esencial a medida que tu código evoluciona. Al dedicar tiempo y esfuerzo a las pruebas, puedes identificar errores con mayor rapidez, mejorar la calidad del código y ofrecer un software más robusto y fiable.









