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)