Este proyecto usa la libreria python-docx-template para manipular archivos de word como plantillas de jija2.
Colocando una serie de variables, condiciones y bucles en nuestro documento de word podemos renderizar documentos con los datos que deseemos.
Para probar esta libreria se estara usando un framework de python para la creacion de APIs llamado fastapi y para el loadtest se estara usando k6.
Debes tener python y pip descargado y en el path. Pueden instalarlo desde estos enlaces:
# Comprobar la instalacion
python -v
pip -v
Debes tener instalado k6 en tu pc.
# Comprobar la instalacion
k6 help
Una vez instalado, se deben ejecutar los siguientes comandos en la carpeta raiz del proyecto:
# Instalar los paquetes necesarios
pip install -r requirements.txt
# Lanzar la aplicacion en el localhost
uvicorn main:app --port 8000 --workers 4
En el flag --workers
indicamos la cantidad de hilos que deseamos usar. Si deseas hacer un test usando mas hilos, puedes colocar la cantidad maxima que posea tu computador.
El swagger se encuentra en la ruta http://localhost:8000/docs
. En la ruta /compose
se debe colocar el doc_id
y la data en el body. Ambos se encuentran en el archivo demo.json
.
Una vez que se ejecuta el metodo, el documento de word generado se va a colocar en la carpeta /out
del proyecto.
Para ejecutar el load test debes correr el siguiente comando:
k6 run ./test.js
En el archivo demo.json
se encuentra la data que sera usada para generar cada archivo. Solo se tiene que modificar las constantes doc_id y data del archivo test.js
// Esta info se encuentra en el archivo demo.json
const doc_id = 'DOC1';
const data = {
"var": "Hola distinguido",
"items": [
{ "name": "Gustavo", "lastname": "Sanchez" },
{ "name": "Elena", "lastname": "Perez" },
{ "name": "Carlos", "lastname": "Amancio" }
]
};
Puedes modificar el tipo de test a utilizar entre las opciones preestablecidas en el archivo de test.js
o creando una personalizada.
Los test estan configurados para durar solo 1 minuto y solo es ejecutada la opcion que selecciones.
const simpleTestOptions = {
...
};
const loadTestOptions = {
...
};
const stressTestOptions = {
...
};
// Puede escoger entre las tres opciones mas arriba o crear la suya https://k6.io/docs/test-types/load-test-types/
export const options = simpleTestOptions;