with tutorial framework espaƱol djangoproject desde con cero applications python unit-testing regression-testing test-suite pyunit

tutorial - Intentando implementar Python TestSuite



tutorial django (4)

Si está intentando recolectar manualmente TestCase , esto es útil: unittest.loader.findTestCases() :

# Given a module, M, with tests: mySuite = unittest.loader.findTestCases(M) runner = unittest.TextTestRunner() runner.run(mySuit)

Tengo dos casos de prueba (dos archivos diferentes) que quiero ejecutar juntos en un Test Suite. Puedo hacer que las pruebas se ejecuten simplemente ejecutando python "normalmente", pero cuando selecciono ejecutar una prueba de python-unit dice que se ejecutan 0 pruebas. En este momento solo estoy tratando de obtener al menos una prueba para ejecutar de forma correcta.

import usertest import configtest # first test import unittest # second test testSuite = unittest.TestSuite() testResult = unittest.TestResult() confTest = configtest.ConfigTestCase() testSuite.addTest(configtest.suite()) test = testSuite.run(testResult) print testResult.testsRun # prints 1 if run "normally"

Aquí hay un ejemplo de mi caso de prueba configurado

class ConfigTestCase(unittest.TestCase): def setUp(self): ##set up code def runTest(self): #runs test def suite(): """ Gather all the tests from this module in a test suite. """ test_suite = unittest.TestSuite() test_suite.addTest(unittest.makeSuite(ConfigTestCase)) return test_suite if __name__ == "__main__": #So you can run tests from this module individually. unittest.main()

¿Qué debo hacer para que esto funcione correctamente?


Supongo que se refiere a ejecutar una prueba de unidad de Python en el módulo que consolida las dos pruebas. Funcionará si crea un caso de prueba para ese módulo, es decir. subclassing unittest.TestCase y tener una prueba simple que comienza con la palabra ''test''.

p.ej

class testall(unittest.TestCase): def test_all(self): testSuite = unittest.TestSuite() testResult = unittest.TestResult() confTest = configtest.ConfigTestCase() testSuite.addTest(configtest.suite()) test = testSuite.run(testResult) print testResult.testsRun # prints 1 if run "normally" if __name__ == "__main__": unittest.main()


Todo el código para crear un cargador y suite es innecesario. Debe escribir sus pruebas para que puedan ejecutarse mediante el descubrimiento de prueba utilizando su corredor de prueba favorito. Eso solo significa nombrar sus métodos de una manera estándar, colocándolos en un lugar importable (o pasando una carpeta que los contiene al corredor) y heredando de unittest.TestCase . Después de que hayas hecho eso, puedes usar python -m unittest discover en el más simple, o un corredor de terceros más agradable para descubrir y luego ejecutar tus pruebas.


quieres usar un traje de prueba Entonces no necesita llamar a unittest.main (). El uso de testsuit debe ser así ...

#import usertest #import configtest # first test import unittest # second test class ConfigTestCase(unittest.TestCase): def setUp(self): print ''stp'' ##set up code def runTest(self): #runs test print ''stp'' def suite(): """ Gather all the tests from this module in a test suite. """ test_suite = unittest.TestSuite() test_suite.addTest(unittest.makeSuite(ConfigTestCase)) return test_suite mySuit=suite() runner=unittest.TextTestRunner() runner.run(mySuit)