Pregunta

Estoy tratando de hacer algunas pruebas unitarias en pitón de lo que creo que es un módulo. Tengo una estructura de directorios como

TestSuite.py
UnitTests
  |__init__.py
  |TestConvertStringToNumber.py

En testsuite.py TENGO

import unittest

import UnitTests

class TestSuite:
    def __init__(self):
        pass

print "Starting testting"
suite = unittest.TestLoader().loadTestsFromModule(UnitTests)
unittest.TextTestRunner(verbosity=1).run(suite)

Lo que parece dar inicio a la prueba bien, pero no recoger a cualquiera de la prueba en TestConvertNumberToString.py. En esa clase Tengo un conjunto de funciones que comienzan con 'prueba'.

¿Qué debería estar haciendo tal que la ejecución de pitón TestSuite.py en realidad arranca todas mis pruebas en unittests?

¿Fue útil?

Solución

Aquí hay un código que se ejecutará todas las pruebas unitarias en un directorio:

#!/usr/bin/env python
import unittest
import sys
import os

unit_dir = sys.argv[1] if len(sys.argv) > 1 else '.'
os.chdir(unit_dir)
suite = unittest.TestSuite()
for filename in os.listdir('.'):
    if filename.endswith('.py') and filename.startswith('test_'):
        modname = filename[:-2]
        module = __import__(modname)
        suite.addTest(unittest.TestLoader().loadTestsFromModule(module))

unittest.TextTestRunner(verbosity=2).run(suite)

Si usted lo llama testsuite.py, entonces tendría que ejecutar de esta manera:

testsuite.py UnitTests

Otros consejos

El uso de corredor de prueba de "prueba" de trenzado, que puede deshacerse de TestSuite.py, y acaba de hacer:

$ trial UnitTests.TestConvertStringToNumber

en la línea de comandos; o, mejor aún, simplemente

$ trial UnitTests

para descubrir y ejecutar todas las pruebas en el paquete.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top