Robot Cadre de l'équivalent de pytest.luminaire
-
21-12-2019 - |
Question
Une fonctionnalité que j'aime beaucoup avec pytest est pytest.luminaire qui permet l'injection de dépendance.Comme exemple, je peux avoir un appareil d'injecter une nouvelle chaîne de caractères aléatoires silly_string
dans toute fonction qui en ont besoin:
conftest.py:
@pytest.fixture(scope='function')
def silly_string(request):
return ''.join(random.choice(string.ascii_lowercase) for _ in range(5))
test_strings.py
def test_string_length(self, silly_string)
assert len(silly_string) == 5
Exemple artificiel, évidemment.
Je ne suis pas au courant de toutes les fonctionnalités équivalentes au sein de Robot Cadre.Actuellement, je crée une nouvelle variable à l'aide d'un mot-clé, puis passer cette variable en tant que paramètre.Il serait agréable d'avoir le paramètre automatiquement injecté.
Est-il un mécanisme à l'intérieur du Robot Cadre à même d'effectuer l'injection de dépendance?
La solution
Non, il n'y a rien de construit-dans le robot pour faire ce que vous voulez.
Si ce que vous êtes après est les chaînes générées lors de l'exécution, vous pouvez tirer parti du robot étendue variable syntaxe.Par exemple, si vous avez un robot variable ${v}
qui contient une référence à un objet python, vous pouvez faire quelque chose comme ceci:
| | ${v}= | Get reference to v
| | log | Hello ${v.silly_string()}`
Le ci-dessus qui fera appel à la silly_string
méthode sur l'objet pointé par ${v}
.Le mot-clé Get reference to v
serait un python mots-clés que vous écrivez qui retourne un objet avec la silly_string
la méthode.