Las strings de documentos en Python se utilizan no solo para la descripción de una clase o una función para proporcionar una mejor comprensión del código y el uso, sino también para fines de prueba.
El módulo Doctest encuentra patrones en la string de documentación que parecen comandos de shell interactivos.
La entrada y el resultado esperado se incluyen en la string de documentación, luego el módulo doctest usa esta string de documentación para probar la salida procesada.
Después de analizar la string de documentación, el texto analizado se ejecuta como comandos de shell de Python y el resultado se compara con el resultado esperado obtenido de la string de documentación.
Aquí hay un ejemplo simple:
1. importa testmod desde doctest para probar la función.
2. Definir nuestra función de prueba.
3. Proporcione una string de documentos adecuada que contenga la salida deseada en ciertas entradas.
4. Defina la lógica.
5. Llame a la función testmod con el nombre de la función para probar y establezca Verbose True como argumentos.Nota: Todos los argumentos son opcionales. El nombre de la función se pasa explícitamente al testmod. Es útil si hay varias funciones.
Implementación
# import testmod for testing our function from doctest import testmod # define a function to test def factorial(n): ''' This function calculates recursively and returns the factorial of a positive number. Define input and expected output: >>> factorial(3) 6 >>> factorial(5) 120 ''' if n <= 1: return 1 return n * factorial(n - 1) # call the testmod function if __name__ == '__main__': testmod(name ='factorial', verbose = True)
Producción:
Trying: factorial(3) Expecting: 6 ok Trying: factorial(5) Expecting: 120 ok 1 items had no tests: factorial 1 items passed all tests: 2 tests in factorial.factorial 2 tests in 2 items. 2 passed and 0 failed. Test passed.
Ahora, prueba para fallar. ¿Qué pasa si nuestra lógica es incorrecta?
# import testmod for testing our function from doctest import testmod # define a function to test def factorial(n): ''' This function calculates recursively and returns the factorial of a positive number. Define input and expected output: >>> factorial(3) 6 >>> factorial(5) 120 ''' if n <= 1: return 1 # wrong logic for factorial return factorial(n - 1) # call the testmod function if __name__ == '__main__': testmod(name ='factorial', verbose = True)
Producción:
Trying: factorial(3) Expecting: 6 ********************************************************************** File "woking_with_csv.py", line 33, in factorial.factorial Failed example: factorial(3) Expected: 6 Got: 1 Trying: factorial(5) Expecting: 120 ********************************************************************** File "woking_with_csv.py", line 35, in factorial.factorial Failed example: factorial(5) Expected: 120 Got: 1 1 items had no tests: factorial ********************************************************************** 1 items had failures: 2 of 2 in factorial.factorial 2 tests in 2 items. 0 passed and 2 failed. ***Test Failed*** 2 failures.
Nota : si ‘verbose’ se establece en False (predeterminado), la salida se mostrará solo en caso de falla, no en caso de éxito.
Publicación traducida automáticamente
Artículo escrito por mohit_negi y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA