2010-04-09 7 views
1

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écution d'un test de test unittest OO

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') 
     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') 

une de cette sortie erreur: Attribute Erreur: objet 'module' n'a pas d'attribut « suite '

Donc, je peux voir comment appeler une fonction normale définie, mais je trouve qu'il est difficile d'appeler dans la suite. Dans l'un des essais, la suite est mis en place comme ceci:

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 someSuite() dans le python classe de SmokeTests ne peut pas trouver la suite d'attribut, mais si je retire la classe qu'il travail de. 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

Quelqu'un peut-il m'aider à obtenir cette course?

Merci pour toute aide à l'avance.

+1

-1: Veuillez ne pas réécrire complètement le code que vous avez posté. Fermez la question et postez une nouvelle question avec un code totalement nouveau. –

+0

@everyone - Vous avez ce travail dans la question suivante. – chrissygormley

Répondre

3

Je sais que ce n'est pas la réponse, mais je suggérerais d'utiliser la bibliothèque qui peut utiliser la découverte de test, comme la capacité du nez ou unittest de Python 2.7+.

Possibilité de faire

nosetests module.submodule 

ou

nosetests module.submodule:TestCase.test_method 

n'a pas de prix :)

1

Cela ne peut pas fonctionner:

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') 

une sortie de cette erreur: Erreur d'attribut : objet 'module' h comme aucun attribut 'suite'.

Votre suite est la valeur de la méthode SmokeTests().suite(). Notez une variable nommée suite, puisque vous n'avez pas une telle variable.

Il est plus facile d'utiliser une fonction simple pour votre suite.

def someSuite(): 
    modules_to_test 
    ... 
    return alltests 

if __name__ == "__main__": 
    unittest.main(defaultTest= someSuite()) 

Quelque chose comme ça serait plus proche de corriger.

Questions connexes