Este repositorio contiene tests para realizar pruebas en los scripts realizados en las sesiones de prácticas de la asignatura de Administración de Sistemas del grado de Ingeniería en Informática de la Universidad de Zaragoza.
Los tests requieren de un interprete de python versión 3 y de la biblioteca [pexpect] (https://pexpect.readthedocs.io/en/stable/). Para instalarlos:
as@as0:~/sudo apt update && sudo apt install python3 python3-pexpect
Los tests se encuentran dentro de un repositorio git y se pueden descargar/clonar utilizando los comandos:
as@as0:~/sudo apt install git
as@as0:~/git clone https://github.com/universidad-zaragoza/tests_practicas_AS
Al terminar la operación se crearán múltiples directorio con todos los tests y una carpeta para las prácticas 2, 3 y 4 con los ficheros vacíos que hay que completar tal y como se muestra a continuación.
as@as0:~/as_tests_practicas/tree
.
├── practica_2
│ ├── practica2_1.sh
│ ├── practica2_2.sh
│ ├── practica2_3.sh
│ ├── practica2_4.sh
│ ├── practica2_5.sh
│ └── practica2_6.sh
├── practica_3
│ └── practica_3.sh
├── practica_4
│ └── practica_4.sh
├── README.md
├── tests
│ ├── correct_user_list.txt
│ ├── incorrect_user_list_add_3_fields.txt
│ ├── incorrect_user_list_add_multiple_no_passwd.txt
│ ├── incorrect_user_list_add_no_passwd.txt
│ ├── incorrect_user_list_existing_root.txt
│ ├── incorrect_user_list_remove_non_existing_user.txt
│ ├── test_practica2_1.py
│ ├── test_practica2_2.py
│ ├── test_practica2_3.py
│ ├── test_practica2_4.py
│ ├── test_practica2_5.py
│ ├── test_practica2_6.py
│ ├── test_practica3.py
│ └── test_practica4.py
└── utils
└── remove_possible_users.sh
Si quieres asegurarte que tienes la última versión de los tests puedes utilizar git pull o git reset si los has modificado y no quieres preservar las modificaciones.
as@as0:~/as_tests_practicas/git pull origin/master
o as@as0:~/as_tests_practicas/git fetch --all && git reset --hard origin/master
IMPORTANTE: Antes de hacer un git reset recuerda haber copiado tus scripts en otra carpeta ya que git los borrara. Una alternativa sería trabajar con un fork propio tal y como se describe en la documentación de fork de gitlab
El nombre de cada test es homónimo al de los scripts de los guiones de prácticas con el prefijo test_. Para realizar las pruebas, hay que asegurar que el fichero a comprobar se encuentra en su localización inicial. Por ejemplo:
as@as0:~/as_tests_practicas/tests/test_practica2_1.py
Espera que exista el fichero as_tests_practicas/practica2/practica2_1.sh
.
Cada script comprende varios tests unitarios que pueden ser ejecutados de manera individual ya que están basados en el módulo unittest de python.
Cada test incluye varios tests unitarios. Cuando un test unitario se ejecuta correctamente aparece un punto en la pantalla y si falla aparecerá un mensaje del tipo:
as@as0:~/as_tests_practicas/tests/test_practica2_1.py
......F
======================================================================
FAIL: test_shebang (__main__.TestPractica2_1)
----------------------------------------------------------------------
Traceback (most recent call last):
File "./test_practica2_1.py", line 34, in test_shebang
(pattern.match(first_line) != None), msg='Invalid shebang')
AssertionError: Invalid shebang
----------------------------------------------------------------------
Ran 7 tests in 0.477s
Después de FAIL
se indica el nombre del test unitario que ha fallado, en este
caso test_shebang
lo que nos indicará que debemos revisar la primera línea de
nuestro script. Es importante leer el nombre ya que siempre nos informara de la
parte donde ha ocurrido el error.
Para cualquier sugerencia contactar con los profesores de la asignatura