Pruebas
Callisto incluye pytest, una herramienta que facilita la escritura de pruebas de forma sencilla y flexible, favoreciendo la detección de errores en el código. Y puede escalarse para soportar pruebas funcionales complejas para aplicaciones y bibliotecas.
La configuración para pytest está definida en el archivo pyproject.toml, en el apartado de tool.pytest.ini_options
.
Nota
Los comandos listados a continuación están definidos en el archivo pyproject.toml, en el apartado de tool.poetry-exec-plugin.commands
.
Ejecutar todas las pruebas
Para tener en cuenta
Este comando requiere que el BackEnd de servicios se este ejecutando.
Ejecutar todas las pruebas sin iniciar el BackEnd
Creando tus propios conjuntos de prueba con pytest
Callisto ubica todos los archivos de pruebas, en la carpeta tests, ubicada en la carpeta raíz del proyecto, para iniciar, crea un archivo de prueba, que comience con el prefijo test_
, veamos un ejemplo:
ya creado nuestro archivo, define funciones que comiencen también con test_
, ejemplo:
Ahora utilizaremos @pytest.mark
, un decorador en pytest, que se utiliza para "marcar" pruebas con una etiqueta específica, en este caso, "utils". Esta etiqueta puede servir para organizar y agrupar pruebas relacionadas, facilitando su ejecución o filtrado.
Nota
En el apartado de tool.pytest.ini_options
. comentado mas arriba, se detallan las marcas utilizadas en Callisto. Si deseas agregar una nueva marca, deberás registrarla en ese apartado.
Finalmente dentro de nuestra función de prueba, utiliza assert, inspect, callable... entre otras funciones de utilidad, para comprobar el comportamiento de tu código.
Para tener en cuenta
Puedes ejecutar tus pruebas invocando a pytest con el nombre de la marca, para evitar ejecutar las demás pruebas del resto del BackEnd, ejemplo:
Ahora veamos como queda el archivo de prueba ya completo:
Lectura recomendada
- La carpeta tests, ubicada en la carpeta raíz del proyecto
- pytest
- Working with custom markers
- httpx
- Inspect live objects
- assert: Debug and Test Your Code Like a Pro
- callable