2012-08-17 27 views
21

Tengo dos casos de prueba (dos archivos diferentes) que quiero ejecutar juntos en una Suite de prueba. 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.Intentando implementar Python TestSuite

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" 

He aquí un ejemplo de mi caso de prueba establecido

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é tengo que hacer para conseguir este trabajo correctamente?

Respuesta

38

desea usar un traje de prueba. Entonces no necesita llamar a unittest.main(). El uso de testsuit debería 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) 
+0

acaba de ejecutar el código de –

+0

Gracias, gracias funcionado perfectamente para lo que necesitaba. ¡Gracias un montón! – avoliva

+2

Muchas gracias por esta respuesta. ¿Por qué tengo que llamar 'unittest.makeSuite' para agregar una prueba a una suite * existing *? – timgeb

4

No es necesario todo el código para crear un cargador y un conjunto. 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 forma estándar, ponerlos en un lugar importable (o pasar una carpeta que los contiene al corredor) y heredar desde unittest.TestCase. Después de que hayas hecho eso, puedes usar python -m unittest discover en el corredor más simple o más agradable para descubrir y luego ejecutar tus pruebas.

0

Estoy asumiendo que usted se refiere a la ejecución de la prueba pitón unidad contra 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 'prueba'.

p.

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() 
1

Si usted está tratando de recopilar manualmente TestCase s, esto es útil: unittest.loader.findTestCases():

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