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.discover
de 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__.py
se requiere dentro de los directorios de importación y módulo: Python unittest discovery con subcarpetas
Se import unittest
requiere 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