GOOGLE ADS

domingo, 24 de abril de 2022

Ejecute todas las pruebas desde subdirectorios en Python

Estoy al final de mi ingenio tratando de hacer que todas mis pruebas unitarias se ejecuten en Python. He buscado alrededor de 30 publicaciones diferentes y la documentación de prueba de la unidad, pero aún no puedo resolverlo.

Primero tengo dos clases de prueba que puedo ejecutar cada una individualmente y todas las pruebas pasan:

Archivo: unittest.subcarpeta1.TestObject1.py

class TestObject1(unittest.TestCase):
def test_case1(self):
...some code...
...some assertions...
if __name__ == '__main__':
unittest.main()

Archivo: unittest.subcarpeta2.TestObject2.py

class TestObject2(unittest.TestCase):
def test_case1(self):
...some code...
...some assertions...
if __name__ == '__main__':
unittest.main()

Comenzando en el directorio de nivel superior sobre 'unittest', estoy tratando unittest.discoverde encontrar y ejecutar todas mis pruebas:

import unittest
loader = unittest.TestLoader()
suite = loader.discover('unittest')
unittest.TextTestRunner().run(suite)

Cuando hago esto, aparece el error `ModuleNotFoundError: ningún módulo llamado 'subcarpeta1.TestObject1'

¿Qué estoy haciendo mal?


Solución del problema

Un buen enfoque es ejecutar todas las pruebas en un subdirectorio desde la línea de comandos. Para encontrar los siguientes archivos "TestObject1.py, TestObject2.py,..." en subdirectorios, puede ejecutar el siguiente comando en la línea de comandos:

python -m unittest discover -p 'Test*.py'

Además, __init__.pyse requiere dentro de los directorios de importación y módulo: Python unittest discovery con subcarpetas

Se import unittestrequiere en los archivos unittest.subfolder1.TestObject1.py y unittest.subfolder2.TestObject2.py

También es posible definir explícitamente el directorio donde comienza el descubrimiento con el parámetro -s:

python -m unittest discover [options]
-s directory Directory to start discovery ('.' default)
-p pattern Pattern to match test files ('test*.py' default)

En caso de que esté utilizando unittest2, viene con un script unit2. El uso de la línea de comando es:

unit2 discover unit2 -v test_module

No hay comentarios.:

Publicar un comentario

Flutter: error de rango al acceder a la respuesta JSON

Estoy accediendo a una respuesta JSON con la siguiente estructura. { "fullName": "FirstName LastName", "listings...