J'ai deux cas de test (deux fichiers différents) que je veux exécuter ensemble dans une suite de tests. Je peux faire exécuter les tests simplement en exécutant python "normalement" mais quand je choisis d'exécuter un test d'unité python, il dit 0 test exécuté. En ce moment, j'essaie simplement d'obtenir à au moins un test pour fonctionner correctement.
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"
Voici un exemple de mon scénario de test configuré
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()
Que dois-je faire pour obtenir ce travail correctement?
vous souhaitez utiliser une combinaison de tests. Vous n'avez donc pas besoin d'appeler unittest.main (). L'utilisation de la combinaison de tests devrait être comme ceci:
#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)
Tout le code pour créer un chargeur et une suite n'est pas nécessaire. Vous devez écrire vos tests afin qu'ils puissent être exécutés via la découverte de tests à l'aide de votre lanceur de test préféré. Cela signifie simplement nommer vos méthodes de manière standard, les placer dans un emplacement importable (ou passer un dossier les contenant au runner) et hériter de unittest.TestCase
. Après cela, vous pouvez utiliser python -m unittest discover
au plus simple, ou un meilleur coureur tiers pour découvrir et exécuter vos tests.
Si vous essayez de collecter manuellement TestCase
s, cela est utile: unittest.loader.findTestCases()
:
# Given a module, M, with tests:
mySuite = unittest.loader.findTestCases(M)
runner = unittest.TextTestRunner()
runner.run(mySuit)
Je suppose que vous faites référence à l'exécution d'un test unitaire python contre le module qui consolide les deux tests. Cela fonctionnera si vous créez un cas de test pour ce module, c'est-à-dire. sous-classement unittest.TestCase
et avoir un test simple qui commence par le mot 'test'.
par exemple.
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()