J'ai une suite de tests pour effectuer des tests de fumée. J'ai tout mon script stocké dans diverses classes, mais quand j'essaie de lancer la suite de tests, je n'arrive pas à la faire fonctionner si elle est dans une classe. Le code est ci-dessous: (une classe pour appeler les essais)Exécuter unittest dans une classe
from alltests import SmokeTests
class CallTests(SmokeTests):
def integration(self):
self.suite()
if __name__ == '__main__':
run = CallTests()
run.integration()
Et la suite de tests:
class SmokeTests():
def suite(self): #Function stores all the modules to be tested
modules_to_test = ('external_sanity', 'internal_sanity') # This is the name of the file
alltests = unittest.TestSuite()
for module in map(__import__, modules_to_test):
alltests.addTest(unittest.findTestCases(module))
return alltests
if __name__ == '__main__':
unittest.main(defaultTest='suite')
Je peux donc voir comment appeler une fonction normale définie mais je trouve difficile appeler dans la suite. Dans l'un des essais, la suite est mis en place comme ceci:
class TestInternalSanity(unittest.TestCase):
def setUp(self):
setUp script ....
def tearDown(self):
script ....
class BasicInternalSanity(TestInternalSanity):
def runTest(self):
test script ....
class InternalSanityTestSuite(unittest.TestSuite):
# Tests to be tested by test suite
def makeInternalSanityTestSuite():
suite = unittest.TestSuite()
suite.addTest(TestInternalSanity("BasicInternalSanity"))
suite.addTest(TestInternalSanity("VerifyInternalSanityTestFail"))
return suite
def suite():
return unittest.makeSuite(TestInternalSanity)
Si je def suite()
à l'intérieur du class SmokeTests
le script exécute mais les tests ne cours pas, mais si je retire la classe les tests exécutés. Je cours ceci comme un script et appelle des variables dans les tests. Je ne veux pas avoir à exécuter les tests par os.system ('python tests.py'). J'espérais appeler les tests à travers la classe que j'ai comme toute autre fonction. Ce besoin doit être appelé d'une classe car le script que je l'appelle est orienté objet. Si quelqu'un peut obtenir le code à exécuter en utilisant des tests d'appel, je l'apprécierais beaucoup.
de ce travail:
def suite(): #Function stores all the modules to be tested
modules_to_test = ('external_sanity', 'internal_sanity')
alltests = unittest.TestSuite()
for module in map(__import__, modules_to_test):
alltests.addTest(unittest.findTestCases(module))
return alltests
if __name__ == '__main__':
unittest.main(defaultTest='suite')
Cela ne fonctionne pas:
class SmokeTests():
def suite(self): #Function stores all the modules to be tested
modules_to_test = ('external_sanity', 'internal_sanity')
alltests = unittest.TestSuite()
for module in map(__import__, modules_to_test):
alltests.addTest(unittest.findTestCases(module))
return alltests
if __name__ == '__main__':
unittest.main(defaultTest='suite')
Je ne peux pas sembler obtenir ceci pour fonctionner dans la classe, peut-on voir la solution.
Merci
Veuillez fournir un code source fonctionnel. Ceci n'est évidemment pas copié-collé correctement (remarquez la mauvaise indentation). Si vous supprimez SmokeTests.suite(), il ne fonctionnera pas du tout. – Messa
Pourquoi posez-vous cette question à nouveau? http://stackoverflow.com/questions/2606515/problems-running-unittest-test-suite-oo –
@ S.Lott - Je l'ai réécrit pour que la question soit claire – chrissygormley