Está en la página 1de 11

Proyecto Final

“Testing Automatico”

Materia: Estructuras de Datos


Carrera: Tecnicatura en Programación
Profesores: Diego Agustín Ambrossio / Adrian Rodriguez

Alumnos:
● Maira Monzón
● Marcos Lugones
● Flavio Salas
● Gonzalo Copes
Universidad Nacional Guillermo Brown
TECNICATURA EN PROGRAMACIÓN

Trabajo Final para Est. de Datos

ALUMNOS: Maira Monzón, Marcos Lugones ,Flavio Salas, Gonzalo


Copes.

PROFESORES: Diego Agustín Ambrossio, Adrian Rodriguez.

RESUMEN:
El objetivo de ésta investigación es encontrar una alternativa para que los
estudiantes puedan verificar si los ejercicios escritos en Python funcionan de
manera esperada. Para esto, el encargado de pensar y crear los ejercicios utilizará la
librería pytest, la cual le permitirá al estudiante probar su código a la hora de
realizar un ejercicio o trabajar en un proyecto. Como resultado, tendremos una
solución rápida y relativamente sencilla para evaluar y validar el código que los
estudiantes escribirán en sus futuras tareas. Además, se llevarán a cabo otros
testeos para expandir y comprender la automatización.

ABSTRACT:
The objective of this research is to find an alternative so that students can verify if
the exercises written in Python are working as expected. With this in mind, the
person in charge of creating the exercises will use the pytest library which will
allow the student to test their code when writing an exercise or working on a
project. As a result, we will have a quick and relatively simple solution for evaluating
and validating the code that students will write in their future assignments. In
addition, we will run other tests to expand and understand the functionality of
automation.
Introducción

En algunas ocasiones, mientras estudiamos se nos puede pedir que realicemos algunos
ejercicios escritos en Python. Si bien ésto puede no suponer un mayor problema, los
alumnos no tienen una forma de saber si lo que están escribiendo es válido. Para
validar estos ejercicios, podemos hacer uso de la librería pytest, la cual le permitirá al
docente poner una serie de instrucciones para comprobar si lo que escribe el alumno
es correcto o no. En esta oportunidad, vamos a ver el flujo de trabajo a la hora de
recibir un ejercicio, resolverlo y posteriormente testearlo a través de una línea en la
consola de comandos (cmd)

Problema

Tenemos que resolver una actividad provista por el equipo docente. Para ello, se
respetarán los siguientes pasos:

● El profesor realiza el examen


El docente crea el examen o ejercicios en una plataforma de preferencia,
controlando que el testeo que se realizará para evaluarlo sea correcto. Luego de
esto, deberá enviarle un enlace a sus alumnos que servirá como invitación para
la realización del/de los ejercicios (Ya sea descargando los archivos o
visualizarlos desde una plataforma online)

● El alumno lo resuelve, testea y entrega en el plazo establecido


El alumno procede a resolver el ejercicio y, una vez realizados, podrá con una
línea en la consola de comandos verificar si lo que realizó es correcto. Si el test
da un resultado positivo, procederá a entregar el examen.

● El examen debe ser corregido


Por su parte, el cuerpo docente puede correr la misma línea en la consola de
comandos (cmd) para verificar que las actividades estén realizadas
correctamente.
Análisis

Diagrama de Flujo

Implementación en código

A continuación, vamos a mostrar una serie de ejercicios para demostrar la


funcionalidad que nos proporciona la librería pytest.

Requisitos previos

● Python
Lo principal para poder realizar estos test es tener la última versión de Python
instalada en su sistema. La misma se puede descargar desde la página oficial.
https://www.python.org/downloads/
Para comprobar que la instalación haya sido exitosa, abriremos la consola de
comandos y escribiremos:
python --version

● Pytest
Para poder utilizar las herramientas que ofrece la librería pytest, primero es
necesario descargarla. Luego de haber instalado Python correctamente,
abriremos la consola de comandos (cmd) y escribiremos:

pip install pytest

Para comprobar que la instalación haya sido exitosa, en la misma consola


escribiremos:

pytest --version

Ejercicio 01

En este caso, se le entregará al alumno un sólo archivo .py que contendrá la consigna a
realizar junto al comando para testearlo.

Resolución:

Lo que realizamos es crear una función tal que, para cuando corramos el pytest, nos
devuelva un resultado positivo.

Para correr el pytest, lo que debemos hacer es abrir la consola de comandos en la


carpeta donde se encuentran los archivos del ejercicio, y escribir la siguiente linea:
pytest nombredelarchivo_test.py donde nombredelarchivo equivale al nombre del
archivo en el que estamos trabajando (en este caso es ej_list_test.py)

Resultado del pytest

Ejercicio 02

En este caso, se recibirán 2 archivos (ejerciciopais.py y ejerciciopais_test.py) donde en


ejerciciopais.py realizaremos el ejercicio mientras que ejerciciopais_test.py será el
encargado de corroborar si el mismo se realizó de manera correcta o no.
Éste ejercicio se realizó de manera incorrecta para mostrar lo que sucede en la consola
de comandos.

Archivo que contiene el pytest

Archivo del ejercicio, en este caso mal realizado para mostrar el error en consola
Para correr el pytest, lo que debemos hacer es abrir la consola de comandos en la
carpeta donde se encuentran los archivos del ejercicio, y escribir la siguiente línea:

pytest nombredelarchivo_test.py donde nombredelarchivo equivale al nombre del


archivo en el que estamos trabajando (en este caso es ej_pais_test.py)

Resultado del pytest, mostrando el error

Para que el ejercicio pueda pasar el test satisfactoriamente, se deberá realizar de la


siguiente manera:

Ahora bien, dejando de lado los ejercicios, pasemos a un ejemplo un poco más
complejo en el cual testeamos varios parámetros en un único archivo:
En este caso, las funciones test_dividible_por_4 y test_dividible_por_8 marcarán
error (ya que el resto del dividendo es distinto de cero), mientras que las restantes se
llevarán a cabo satisfactoriamente.

En el siguiente caso, vamos a simular una base de datos utilizando un diccionario, en el


cual testeamos si, a través de sus id's, los usuarios pertenecen o no a la base.
En la primera parte del código, creamos un diccionario de nombre basededatos, en la
cual guardamos un nombre y un apellido. Luego simulamos la función READ la cual
comprobará dentro de nuestra base de datos simulada si lo que pedimos en el
posterior testeo se encuentra ahí, con sus respectivos mensajes (200 para una
operación exitosa y 400 si tenemos error). Para finalizar, creamos la función test para
probar nuestro código.

Como pueden ver, la estructura de los testeos varía en complejidad y no sirve


solamente a la hora de realizar y/o corregir ejercicios. Si bien hay veces que puede
parecer muy simple, no deja de ser una herramienta sumamente eficaz a la hora de
realizar pruebas de todo tipo y no sólo se limita a un sólo tipo de testeo o a un único
archivo. Al haber explorado 2 opciones (ejercicios y testeos de otro tipo) queda en claro
que las posibilidades a la hora de realizar estas pruebas son ilimitadas y cuentan con
una gran variedad de opciones para llevarlas a cabo.

Repositorio con los archivos utilizados:


https://github.com/flaviosalas/UNaB-TP-Estructuras-Final
Desafíos

Si bien la implementación de una librería para realizar test como pytest, la cual
implementamos en ésta investigación, trae grandes beneficios a la hora de testear y
evaluar los ejercicios, también tiene ciertos desafíos para el encargado de escribir
tanto los ejercicios como los test. Dado que es una librería precisa, tanto en lo que pide
como en sus resultados, hay que ser sumamente cuidadosos a la hora de escribir el
algoritmo que nos permitirá realizar los testeos. En caso contrario, nos encontraremos
con diversos errores que podrían dificultar nuestro flujo de trabajo. Hay que tener en
cuenta que, dado que es una librería que para realizar los testeos utiliza rutinas
especiales, a veces puede ser difícil para integrar con otros frameworks llegando a ser
necesario la reescritura de todo el código para que pueda adaptarse a la librería.

Conclusión

Luego de ver y analizar en detalle todo lo mostrado anteriormente, podemos llegar a la


conclusión de que la implementación de estos test pueden ser muy beneficiosos a la
hora de realizar actividades o trabajar en un proyecto. Con las herramientas provistas
por la librería, quienes trabajen con código en Python tendrán una manera sencilla y
precisa a la hora de realizar el testeo de sus códigos, sin tener la necesidad de analizar
el código línea por línea lo cual puede demandarnos una cantidad considerable de
tiempo. Así, la implementación de este método puede lograr que el flujo de trabajo sea
lo más eficiente posible.
Bibliografía de consulta

Pytest: helps you write better programs


https://docs.pytest.org/en/7.2.x/

GitHub Repository de Gabor Szabo


https://github.com/szabgab/slides/tree/main/python/examples/pytest

Python Functions
https://www.programiz.com/python-programming/function

What is the Project Lifecycle?


https://www.adeaca.com/blog/faq-items/what-is-the-project-lifecycle/

Pytest automation
https://pypi.org/project/pytest-automation/

PyTest – A Python Solution For Test Automation


https://thinkpalm.com/blogs/pytest-a-python-solution-for-test-automation/

Windows Command Prompt in 15 Minutes


https://www.cs.princeton.edu/courses/archive/spr05/cos126/cmd-prompt.html

Códigos de Estado de Respuesta HTTP


https://developer.mozilla.org/es/docs/Web/HTTP/Status

Create a repo
https://docs.github.com/es/get-started/quickstart/create-a-repo

Flow Chart Symbols


https://www.conceptdraw.com/How-To-Guide/flow-chart-symbols

También podría gustarte