Existe-t-il une fonction déclenchée au début / à la fin d'un scénario de tests? Les fonctions setUp et tearDown sont déclenchées avant / après chaque test.
Je voudrais généralement avoir ceci:
class TestSequenceFunctions(unittest.TestCase):
def setUpScenario(self):
start() #launched at the beginning, once
def test_choice(self):
element = random.choice(self.seq)
self.assertTrue(element in self.seq)
def test_sample(self):
with self.assertRaises(ValueError):
random.sample(self.seq, 20)
for element in random.sample(self.seq, 5):
self.assertTrue(element in self.seq)
def tearDownScenario(self):
end() #launched at the end, once
Pour l'instant, ces setUp et tearDown sont des tests unitaires et se répandent dans tous mes scénarios (contenant de nombreux tests), l'un est le premier test, l'autre est le dernier test.
python
unit-testing
cygne
la source
la source
Réponses:
À partir de 2.7 (selon la documentation ), vous obtenez
setUpClass
ettearDownClass
qui s'exécutent avant et après l'exécution des tests dans une classe donnée, respectivement. Sinon, si vous en avez un groupe dans un seul fichier, vous pouvez utilisersetUpModule
ettearDownModule
( documentation ).Sinon, votre meilleur pari sera probablement de créer votre propre TestSuite dérivé et de le remplacer
run()
. Tous les autres appels seraient gérés par le parent, et run appellerait votre code de configuration et de démontage autour d'un appel à larun
méthode du parent .la source
J'ai le même scénario, pour moi les méthodes setUpClass et tearDownClass fonctionnent parfaitement
la source
Pour python 2.5 et lorsque vous travaillez avec pydev, c'est un peu difficile. Il semble que pydev n'utilise pas la suite de tests, mais trouve tous les cas de test individuels et les exécute tous séparément.
Ma solution pour cela utilisait une variable de classe comme celle-ci:
Avec cette astuce, lorsque vous héritez de ceci
TestCase
(au lieu de celui de l'originalunittest.TestCase
), vous hériterez également de la valeurrunCount
de 0. Ensuite, dans la méthode run, lerunCount
testcase enfant est vérifié et incrémenté. Cela laisse larunCount
variable de cette classe à 0.Cela signifie que le
setUpClass
ne sera exécuté qu'une fois par classe et pas une fois par instance.Je n'ai pas
tearDownClass
encore de méthode, mais je suppose que quelque chose pourrait être fait avec l'utilisation de ce compteur.la source
Voici un exemple: 3 méthodes de test accèdent à une ressource partagée, qui est créée une fois, pas par test.
la source