2017-06-25 17 views
0

J'ai un seul test d'intégration de sélénium de bout en bout qui consiste en plusieurs étapes à chaque étape de réglage de certains états et passage des données à l'étape suivante.Tests d'intégration avec Python unittest: comment améliorer la granularité?

Scénario de test:

1. Create item. 
2. Assign item to group. 
3. Approve item. 
... 
4. Publish item. 

Les étapes ne sont pas atomiques et dépendent les uns des autres. La classe de test s'étend de unittest.TestCase et contient une seule méthode test_xyz() qui enveloppe les méthodes pour chaque étape.

Actuellement, le rapport final inclut uniquement l'état réussite/échec pour la méthode wrapper test_xyz(). J'aimerais que chaque étape soit considérée comme une «étape de test» et que le rapport d'essai contienne une entrée distincte.

Il est erroné de convertir toutes les étapes en test_step1(), test_step2() etc. puis en appliquant l'ordre d'exécution et l'échange de données car les étapes ne sont pas des tests autonomes.

Existe-t-il un moyen de marquer certaines méthodes comme des étapes de test afin qu'elles apparaissent comme des entrées distinctes dans le rapport de test? Fondamentalement, tout ce que je veux, c'est améliorer le rapport visuel de sorte qu'il est plus évident à partir du rapport à quelle étape tout le test d'intégration a échoué. Est-ce réalisable avec unittest? Quelle serait la meilleure pratique pour organiser le code afin qu'il corresponde au paradigme le plus indiscret?

Je ne sais pas unittest est le meilleur outil pour les tests d'intégration, car ce n'est pas à proprement parler tests unitaires. Le passage à quelque chose comme pytest aurait-il plus de sens pour les tests d'intégration tout en permettant la génération de rapports HTML «gratuits»? (J'utilise actuellement nose pour exécuter le test et pour générer le rapport HTML avec le nose plugin. Correspondant)

+0

Il est un peu difficile à dire, car il est mon travail d'examiner d'autres le code écrit dans ce domaine, et je déteste vraiment, mais ... avez-vous considéré Robot Framework? –

+0

J'ai jeté un coup d'oeil à la version python de [capybara.py] (https://github.com/elliterate/capybara.py) qui est utilisée par dropbox, mais je l'ai trouvée très mal documentée. Robot semble être une chose plus établie, merci! – ccpizza

Répondre