Question

Si dire que j'ai un 100 des cas de test à exécuter dans laquelle les cas de test n ° 24, 38 et 99 sont interdépendants.Alors est-il possible que, lors de la 99e cas de test est l'obtention d'exécution, vous renseigner sur le statut d'précédemment exécutées cas de test (dire le 24 ou le 38e cas de test)?Dans mon cas, le 99e cas de test dépend de l'état de la 38e et le 24 cas de test et donc, si, soit le 24 ou le 38e échoue, je voudrais que le 99e cas de test à ne PAS exécutés à tous, et ainsi me faire gagner beaucoup de temps.Gentiment, d'expliquer avec des exemples si possible.Merci à l'avance!

Était-ce utile?

La solution

Une fois que le robot commence à courir, il n'y a aucun moyen de passer un test basé sur une condition.Je pense que c'est une des faiblesses de robot, mais les concepteurs vraiment ne semblent pas comme la notion de sauté de tests.Aussi, il n'y a pas moyen intégré pour un test à dépendre d'une autre.Un demande de fonctionnalité pour cette fonctionnalité a été refusée.

Cependant, le robot est très extensible, et une fonctionnalité qui a été introduite dans la version 2.8.5 facilite l'écriture d'un mot-clé qui va échouer si un autre test a échoué.Cette fonctionnalité est la possibilité pour un bibliothèque d'agir en tant qu'auditeur.Avec cela, une bibliothèque pouvez garder une trace du pass/fail état de chaque test.Avec cette connaissance, vous pouvez créer un mot-clé qui échoue immédiatement si un autre test échoue.

L'idée de base est, cache le pass/fail " comme chaque fin du test (par le biais des _end_test la méthode).Ensuite, utilisez cette valeur pour déterminer si l'échec immédiatement ou pas.

Voici un exemple de comment utiliser un tel mot-clé:

*** Settings ***
| Library | /path/to/DependencyLibrary.py

*** Test Cases ***
| Example of a failing test
| | fail | this test has failed

| Example of a dependent test
| | [Setup] | Require test case | Example of a failing test
| | log | hello, world

Voici la définition de bibliothèque:

from robot.libraries.BuiltIn import BuiltIn

class DependencyLibrary(object):
    ROBOT_LISTENER_API_VERSION = 2
    ROBOT_LIBRARY_SCOPE = "GLOBAL"

    def __init__(self):
        self.ROBOT_LIBRARY_LISTENER = self
        self.test_status = {}

    def require_test_case(self, name):
        key = name.lower()
        if (key not in self.test_status):
            BuiltIn().fail("required test case can't be found: '%s'" % name)

        if (self.test_status[key] != "PASS"):
            BuiltIn().fail("required test case failed: '%s'" % name)

        return True

    def _end_test(self, name, attrs):
        self.test_status[name.lower()] = attrs["status"]

Autres conseils

Pour résoudre ce problème, j'utilise quelque chose comme ceci:

Run Keyword if  '${PREV TEST STATUS}'=='PASSED'  myKeyword

Alors peut-être que cela sera également utilisable pour vous.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top