Marco UnitTest - Marco

'unittest' admite la automatización de pruebas, el intercambio de códigos de configuración y apagado para pruebas, la agregación de pruebas en colecciones y la independencia de las pruebas del marco de informes.

El módulo unittest proporciona clases que facilitan el apoyo a estas cualidades para un conjunto de pruebas.

Para lograr esto, unittest admite los siguientes conceptos importantes:

  • test fixture- Esto representa la preparación necesaria para realizar una o más pruebas y cualquier acción de limpieza asociada. Esto puede implicar, por ejemplo, la creación de directorios o bases de datos temporales o proxy, o el inicio de un proceso de servidor.

  • test case- Ésta es la unidad de prueba más pequeña. Esto busca una respuesta específica a un conjunto particular de entradas. unittest proporciona una clase base,TestCase, que se puede utilizar para crear nuevos casos de prueba.

  • test suite- Esta es una colección de casos de prueba, conjuntos de pruebas o ambos. Esto se utiliza para agregar pruebas que deben ejecutarse juntas. Los conjuntos de pruebas son implementados por la clase TestSuite.

  • test runner- Este es un componente que organiza la ejecución de pruebas y proporciona el resultado al usuario. El corredor puede utilizar una interfaz gráfica, una interfaz textual o devolver un valor especial para indicar los resultados de la ejecución de las pruebas.

Crear una prueba unitaria

Los siguientes pasos están involucrados en la redacción de una prueba unitaria simple:

Step 1 - Importe el módulo unittest en su programa.

Step 2- Definir una función a probar. En el siguiente ejemplo, la función add () se someterá a prueba.

Step 3 - Cree un caso de prueba subclasificando unittest.TestCase.

Step 4- Definir una prueba como método dentro de la clase. El nombre del método debe comenzar con 'prueba'.

Step 5- Cada llamada de prueba afirma la función de la clase TestCase. Hay muchos tipos de afirmaciones. El siguiente ejemplo llama a la función assertEquals ().

Step 6 - La función assertEquals () compara el resultado de la función add () con el argumento arg2 y arroja assertionError si la comparación falla.

Step 7 - Finalmente, llame al método main () desde el módulo unittest.

import unittest
def add(x,y):
   return x + y
   
class SimpleTest(unittest.TestCase):
   def testadd1(self):
      self.assertEquals(add(4,5),9)
      
if __name__ == '__main__':
   unittest.main()

Step 8 - Ejecute el script anterior desde la línea de comandos.

C:\Python27>python SimpleTest.py
.
----------------------------------------------------------------------
Ran 1 test in 0.000s
OK

Step 9 - Los siguientes tres podrían ser los posibles resultados de una prueba -

No Señor Mensaje y descripción
1

OK

La prueba pasa. Se muestra 'A' en la consola.

2

FAIL

La prueba no pasa y genera una excepción AssertionError. Se muestra 'F' en la consola.

3

ERROR

La prueba genera una excepción distinta de AssertionError. Se muestra 'E' en la consola.

Estos resultados se muestran en la consola con '.', 'F' y 'E' respectivamente.

Interfaz de línea de comandos

El módulo unittest se puede utilizar desde la línea de comandos para ejecutar pruebas únicas o múltiples.

python -m unittest test1
python -m unittest test_module.TestClass
python -m unittest test_module.TestClass.test_method

unittest admite las siguientes opciones de línea de comandos. Para obtener una lista de todas las opciones de la línea de comandos, use el siguiente comando:

Python –m unittest -h

No Señor Opción y descripción
1

-h, --help

Mostrar este mensaje

2

v, --verbose

Salida detallada

3

-q, --quiet

Salida mínima

4

-f, --failfast

Detente en el primer fallo

5

-c, --catch

Captura control-C y muestra los resultados

6

-b, --buffer

Búfer stdout y stderr durante las ejecuciones de prueba