Instalar las dependencias (fastapi, pytest, etc) desde el directorio back-end:
python -m pip install -r requirements.txt
ó
pip install -r requirements.txt
En algunos sistemas (por ejemplo Linux Ubuntu) es python3 y pip3, en otros python y pip. La versión mínima es 3.9. En otros sistemas como las variantes de SUSE python3 es Python 3.6 por lo que hay que instalar primero una versión más moderna, por ejemplo con sudo zypper install python310-base y luego utilizar python3.10 en lugar de python3.
Para levantar el servidor del back-end desde una consola o shell dentro de dicho directorio:
python main.py
(o python3 main.py en algunas distribuciones de Linux). El servidor utiliza el puerto 8000. También es posible ejecutarlo de la siguiente manera:
uvicorn main:app
Si se configura para ejecutar en MySQL creará la base de datos y las tablas necesarias si no existen.
Para ejecutar las pruebas unitarias desde una consola o shell desde dentro del directorio back-end:
pytest main_tests.py
Esto ejecutará todas las pruebas unitarias que se encuentren dentro del suite (que incluyen todas las del directorio tests). El pipeline utiliza una línea un poco más larga que también se puede utilizar manualmente:
pytest main_tests.py --cov-config=coverage.ini --doctest-modules --junitxml=main.coverage.xml --cov-append --cov . --cov-report xml --cov-report html
lo que genera un archivo coverage.xml con la información de cobertura y un archivo main.coverage.xml con información de pruebas ejecutadas en formato Junit.
En la sección de documentación se adjunta un archivo con pruebas de Postman para realizar. Las pruebas se realizan sobre una base vacía de MySQL.
index.html realiza una navegación como visitante sin identificarse. Contamos con las ventanas internas de la aplicación, sin embargo al no poder autenticarse no es posible reemplazar los encabezados con las páginas correctas. Sin embargo pueden levantar las páginas internas individualmente para revisarlas aunque clickear en el encabezado pueda redirigirlos a la navegación como invitado.
Las imágenes no son nuestras, las descripciones fueron basadas en otras descripciones ya disponibles en internet.