Cómo ejecutar varias clases en Single Test Suite en Python Prueba de unidades .....Cómo ejecutar varias clases en Single Test Suite en Python ¿Pruebas unitarias?
Respuesta
Si desea ejecutar todas las pruebas de una lista específica de las clases de prueba, en lugar de todas las pruebas de todas las clases de prueba en un módulo, se puede utilizar un loadTestsFromTestCase
método TestLoader
's para obtener una TestSuite
de pruebas para cada clase, y luego crear un único TestSuite
que combina la lista de conjuntos de que se puede utilizar con run
:
import unittest
# Some tests
class TestClassA(unittest.TestCase):
def testOne(self):
# test code
pass
class TestClassB(unittest.TestCase):
def testOne(self):
# test code
pass
class TestClassC(unittest.TestCase):
def testOne(self):
# test code
pass
if __name__ == '__main__':
# Run only the tests in the specified classes
test_classes_to_run = [TestClassA, TestClassC]
loader = unittest.TestLoader()
suites_list = []
for test_class in test_classes_to_run:
suite = loader.loadTestsFromTestCase(test_class)
suites_list.append(suite)
big_suite = unittest.TestSuite(suites_list)
runner = unittest.TextTestRunner()
results = runner.run(big_suite)
# ...
He encontrado nose como una buena herramienta para esto. Descubre todas las pruebas unitarias en una estructura de directorio y las ejecuta.
¿Puede publicar solución para este problema, por favor ... – passionTime
No estoy seguro de lo que está preguntando aquí, pero si quiere saber cómo probar varias clases en la misma suite, generalmente solo crea varias clases de prueba en el mismo archivo python y las ejecuta juntas:
import unittest
class TestSomeClass(unittest.TestCase):
def testStuff(self):
# your testcode here
pass
class TestSomeOtherClass(unittest.TestCase):
def testOtherStuff(self):
# testcode of second class here
pass
if __name__ == '__main__':
unittest.main()
y correr con por ejemplo:
python mytestsuite.py
ejemplos más se pueden encontrar en the official documention.
Si, por otro lado, desea ejecutar varios archivos de prueba, como se detalla en "How to organize python test in a way that I can run all tests in a single command?", entonces la otra respuesta es probablemente mejor.
Normalmente se haría de la siguiente manera (que añade una sola clase por suite):
# Add tests.
alltests = unittest.TestSuite()
alltests.addTest(unittest.makeSuite(Test1))
alltests.addTest(unittest.makeSuite(Test2))
Si le gustaría tener múltiples clases por suite, que puede utilizar agregar estas pruebas de la siguiente manera:
for name in testnames:
suite.addTest(tc_class(name, cargs=args))
Aquí es mismo ejemplo para ejecutar todas las clases por suite independiente puede definir su propio método make_suite
:
# Credits: http://codereview.stackexchange.com/a/88662/15346
def make_suite(tc_class):
testloader = unittest.TestLoader()
testnames = testloader.getTestCaseNames(tc_class)
suite = unittest.TestSuite()
for name in testnames:
suite.addTest(tc_class(name, cargs=args))
return suite
# Add all tests.
alltests = unittest.TestSuite()
for name, obj in inspect.getmembers(sys.modules[__name__]):
if inspect.isclass(obj) and name.startswith("FooTest"):
alltests.addTest(make_suite(obj))
result = unittest.TextTestRunner(verbosity=2).run(alltests)
Si arriba no está incluido, puede convertir el ejemplo anterior en un método que podría aceptar múltiples clases.
El método unittest.TestLoader.loadTestsFromModule() descubrirá y cargará todas las clases en el módulo especificado. Entonces puede hacer esto:
import unittest
import sys
class T1(unittest.TestCase):
def test_A(self):
pass
def test_B(self):
pass
class T2(unittest.TestCase):
def test_A(self):
pass
def test_B(self):
pass
if __name__ == "__main__":
suite = unittest.TestLoader().loadTestsFromModule(sys.modules[__name__])
unittest.TextTestRunner(verbosity=3).run(suite)
- 1. Pruebas unitarias en Python
- 2. IDLE para ejecutar pruebas unitarias Python PyUnit
- 3. Interfaces de pruebas unitarias en Python
- 4. Ejecutando JUnit Test en paralelo en Suite Level?
- 5. Ejecutar JUnit Test suite desde la línea de comandos
- 6. ejecutar varias pruebas en una secuencia de comandos en paralelo usando Test Unit Rubí
- 7. Pruebas unitarias Clases abstractas en Groovy
- 8. Django Test Suite Cobertura URL
- 9. ¿Cómo ejecutar single testcase en XCode?
- 10. Fitnesse: Cómo ejecutar pruebas específicas en varias suites de prueba
- 11. Selenium Test Case vs. Test Suite frente a uso general
- 12. Pruebas unitarias en C++
- 13. ¿Cómo ejecutar las pruebas unitarias (MSTest) en paralelo?
- 14. Errores ocasionales al ejecutar OCUnit application test suite en el dispositivo
- 15. ¿Cómo puedo ejecutar pruebas individuales con Test :: Class :: Load?
- 16. C: biblioteca de hilos POSIX test-suite
- 17. Pruebas unitarias clases abstractas y/o interfaces
- 18. ¿Nuevo en pruebas unitarias, cómo escribir grandes pruebas?
- 19. Pruebas unitarias ... cómo mejorarlo
- 20. Fail TFS Build on Single Unit Test Failure
- 21. Python - Pruebas torcidas y unitarias
- 22. enviar parámetros de test suite a test case en junit 4
- 23. ¿Cómo distribuir y ejecutar pruebas unitarias específicas de la plataforma?
- 24. Pruebas unitarias en CakePHP?
- 25. Pruebas unitarias en C++
- 26. Pruebas unitarias REST Controller con spring-test-mvc
- 27. ¿Cómo configuro el corredor de pruebas VS2012 para recoger y ejecutar las pruebas unitarias de Gallio?
- 28. Pruebas unitarias para excepciones en el constructor Python
- 29. ¿Cómo puedo hacer pruebas unitarias en Perl?
- 30. Pruebas unitarias: cómo hacerlo?
¿Quisiste decir esto? http://stackoverflow.com/questions/1732438/run-all-unit-test-in-python-directory – amdstorm
¿Te refieres a esto? http://stackoverflow.com/questions/1732438/run-all-unit-test-in-python-directory Ejecuta múltiples clases de prueba de Python en un directorio – amdstorm