Pruebas unitarias en Python – Unittest

¿Qué es la prueba unitaria?
La prueba unitaria es el primer nivel de prueba de software donde se prueban las partes más pequeñas que se pueden probar de un software. Esto se utiliza para validar que cada unidad del software funcione según lo diseñado.
El marco de prueba unittest es el marco de estilo xUnit de python.

Método:
El método de prueba de caja blanca se utiliza para las pruebas unitarias.

Conceptos de programación orientada a objetos compatibles con el marco unittest:

  • dispositivo de prueba:
    un dispositivo de prueba se utiliza como línea de base para ejecutar pruebas para garantizar que haya un entorno fijo en el que se ejecuten las pruebas para que los resultados sean repetibles.
    Ejemplos:
    • creación de bases de datos temporales.
    • iniciar un proceso de servidor.
  • Caso de prueba:
    Un caso de prueba es un conjunto de condiciones que se utilizan para determinar si un sistema bajo prueba funciona correctamente.
  • conjunto de pruebas:
    el conjunto de pruebas es una colección de casos de prueba que se utilizan para probar un programa de software para mostrar que tiene un conjunto específico de comportamientos mediante la ejecución de las pruebas agregadas juntas.
  • corredor de prueba:
    un corredor de prueba es un componente que configura la ejecución de pruebas y proporciona el resultado al usuario.

Estructura básica de la prueba:
unittest define las pruebas de las siguientes dos maneras:

  • Administre los «accesorios» de prueba usando código.
  • probarse a sí mismo.
import unittest
  
class SimpleTest(unittest.TestCase):
  
    # Returns True or False. 
    def test(self):        
        self.assertTrue(True)
  
if __name__ == '__main__':
    unittest.main()

Este es el código de prueba básico que usa el marco unittest, que tiene una sola prueba. Este método test() fallará si VERDADERO es alguna vez FALSO.

Ejecución de pruebas

if __name__ == '__main__':
    unittest.main()

El último bloque ayuda a ejecutar la prueba al ejecutar el archivo a través de la línea de comando.

.
----------------------------------------------------------------------
Ran 1 test in 0.000s

OK

Aquí, en la salida el «.» en la primera línea de salida significa que pasó una prueba.
La opción «-v» se agrega en la línea de comando mientras se ejecutan las pruebas para obtener resultados de prueba más detallados.

test (__main__.SimpleTest) ... ok

----------------------------------------------------------------------
Ran 1 test in 0.000s

OK

Resultados posibles:
Hay tres tipos de resultados posibles de la prueba:

  • OK: esto significa que se han superado todas las pruebas.
  • FAIL: esto significa que la prueba no pasó y se genera una excepción AssertionError.
  • ERROR: esto significa que la prueba genera una excepción distinta de AssertionError.

Veamos un ejemplo para comprender la implementación del marco unittest.

Implementación:

# Python code to demonstrate working of unittest
import unittest
  
class TestStringMethods(unittest.TestCase):
      
    def setUp(self):
        pass
  
    # Returns True if the string contains 4 a.
    def test_strings_a(self):
        self.assertEqual( 'a'*4, 'aaaa')
  
    # Returns True if the string is in upper case.
    def test_upper(self):        
        self.assertEqual('foo'.upper(), 'FOO')
  
    # Returns TRUE if the string is in uppercase
    # else returns False.
    def test_isupper(self):        
        self.assertTrue('FOO'.isupper())
        self.assertFalse('Foo'.isupper())
  
    # Returns true if the string is stripped and 
    # matches the given output.
    def test_strip(self):        
        s = 'geeksforgeeks'
        self.assertEqual(s.strip('geek'), 'sforgeeks')
  
    # Returns true if the string splits and matches
    # the given output.
    def test_split(self):        
        s = 'hello world'
        self.assertEqual(s.split(), ['hello', 'world'])
        with self.assertRaises(TypeError):
            s.split(2)
  
if __name__ == '__main__':
    unittest.main()

El código anterior es un script corto para probar métodos de 5 strings. unittest.TestCase se usa para crear casos de prueba al subclasificarlo. El último bloque de código en la parte inferior nos permite ejecutar todas las pruebas con solo ejecutar el archivo.

Términos básicos utilizados en el código:

  • afirmarEqual(): esta declaración se utiliza para verificar si el resultado obtenido es igual al resultado esperado.
  • afirmarVerdadero() / afirmarFalso(): esta declaración se usa para verificar si una declaración determinada es verdadera o falsa.
  • assertRaises(): esta declaración se utiliza para generar una excepción específica.

Descripción de las pruebas:

  • test_strings_a
    Esta prueba se usa para probar la propiedad de una string en la que un carácter, digamos ‘a’, multiplicado por un número, digamos ‘x’, da como resultado x veces ‘a’. La instrucción assertEqual() devuelve verdadero en este caso si el resultado coincide con la salida dada.
  • test_upper
    Esta prueba se usa para verificar si la string dada se convierte a mayúsculas o no. La declaración assertEqual() devuelve verdadero si la string devuelta está en mayúsculas.
  • test_isupper
    Esta prueba se usa para probar la propiedad de la string que devuelve VERDADERO si la string está en mayúsculas; de lo contrario, devuelve Falso. La declaración assertTrue() / assertFalse() se utiliza para esta verificación.
  • test_strip
    Esta prueba se utiliza para verificar si todos los caracteres pasados ​​en la función se han eliminado de la string. La instrucción assertEqual() devuelve verdadero si la string se elimina y coincide con el resultado dado.
  • test_split
    Esta prueba se usa para verificar la función de división de la string que divide la string a través del argumento pasado en la función y devuelve el resultado como una lista. La instrucción assertEqual() devuelve verdadero en este caso si el resultado coincide con la salida dada.

unittest.main() proporciona una interfaz de línea de comandos para el script de prueba. Al ejecutar el script anterior desde la línea de comandos, se produce el siguiente resultado:

.....
----------------------------------------------------------------------
Ran 5 tests in 0.000s

OK

Este artículo es una contribución de Aditi Gupta . Si le gusta GeeksforGeeks y le gustaría contribuir, también puede escribir un artículo usando contribuya.geeksforgeeks.org o envíe su artículo por correo a contribuya@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.

Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *