Obtenez une clé à partir d'un dictionnaire en toute sécurité dans le robot cadre
J'aurais une bibliothèque avec une seule fonction pour amener une clé à partir d'un dictionnaire. Est-ce possible à l'intérieur d'une suite de test?
def safe_get(dict_obj, key):
val = dict_obj.get(key)
if val is None:
val = {}
return val
Est-il un moyen de faire cela en utilisant quelque chose comme Run_Keyword_If
ou Set_Variable_If
?
Ce qui devrait être "possible à l'intérieur d'une suite de test" et que voulez vous faire à l'aide de
Aussi, vous avez juste besoin de la clé ou vous avez besoin de la valeur associée à cette clé? Je suis en supposant que vous aurez le but ultime d'obtenir la valeur correcte?
Je veux dire à l'intérieur du robot fichier de test avec rien de dépendances externes.
Je veux que la valeur de cette clé
Run Keyword If
ou Set Variable If
?Aussi, vous avez juste besoin de la clé ou vous avez besoin de la valeur associée à cette clé? Je suis en supposant que vous aurez le but ultime d'obtenir la valeur correcte?
Je veux dire à l'intérieur du robot fichier de test avec rien de dépendances externes.
Je veux que la valeur de cette clé
OriginalL'auteur Charles L. | 2016-01-08
Vous devez vous connecter pour publier un commentaire.
TL;DR:
En supposant que vous êtes à l'aide de robot 2.9 ou plus tard, vous pouvez appeler la
get
méthode sur le dictionnaire à l'aide de la Évaluer mot-clé, ce qui vous permettra de spécifier une valeur par défaut lorsque la clé n'existe pas.Par exemple:
Explication
De départ avec robotframework de 2,9 vous pouvez directement accéder à des variables dans les expressions en supprimant les accolades (voir L'Évaluation Des Expressions dans le BuiltIn la documentation de la bibliothèque). Par exemple, si vous avez un dictionnaire nommé
${data}
, vous pouvez utiliser la variable dans une expression avec$data
.Ce fait, il est très facile d'utiliser des variables dans les expressions python. Par exemple, si vous souhaitez fournir une valeur par défaut pour quand un dictionnaire ne pas avoir une clé, vous pouvez appeler le
get
méthode du dictionnaire à l'aide de la Évaluer mot-clé avec quelque chose comme$data.get(...)
.Note également que le robot définit la variable
${None}
être le python valeurNone
(pas la chaîne"None"
), que vous pouvez utiliser dans une expression pour vérifier si une valeur estNone
.Les exemples suivants montrent comment utiliser
evaluate
d'appeler leget
méthode du dictionnaire. Le premier test montre que vous pouvez vérifier pour unNone
valeur, le deuxième exemple montre comment vous pouvez fournir une valeur par défaut.Bien sûr, si vous voulez que votre valeur par défaut à un nouveau dictionnaire (comme le laisse entendre votre question), vous pouvez le faire aussi:
${value}= Set_Variable ${data.get("some key")}
être privilégiées?Pas nécessairement. Je ne suis pas sûr qu'il y est un moyen privilégié.
Je demande à b/c eval est généralement mal vu en python, mais je ne suis pas sûr de ce mécanisme ${données.get ()}.
si c'est un test qui vous permet de contrôler les données, il est parfaitement sûr. Si vous êtes vraiment intéressé à ce sujet, vous pouvez écrire un mot-clé en python, ou de la chaîne de tout un tas de robot de mots clés.
OriginalL'auteur Bryan Oakley
Ici,
Charles Dictionary
est un nom de dictionnaire que j'ai déclaré dans leVariables
section. J'ai mis 2 paires clé-valeur, appelez un mot-cléWork with Interests
, et de transmettre ce dictionnaire comme un argument.La
Work with Interests
mot-clé obtient des valeurs à partir du dictionnaire, ce qui permet pour les deux Aucun et sans Aucune valeurs.Si un dictionnaire est la clé présent dans celui-ci, la variable
val
obtiendrez la valeur associée à cette touche. Si le dictionnaire ne PAS avoir cette clé, la variableval
obtiendra une valeur deNone
.J'ai également illustré comment vous pouvez gérer et Aucun ne Aucun des valeurs dans l'ordre d'appel des mots clés différents. J'ai utilisé le
Log
mot-clé pour illustrer, mais vraiment, vous pouvez appeler n'importe quel mot clé que vous aimez, un mot-clé ou votre propre mot-clé.J'espère que cela vous aide. Si elle ne le fait pas, s'il vous plaît ne laissez-moi savoir.
Run Keyword If
etSet Variable If
étaient toujours rien pour moi sur la fausse affaire.Je ne suis pas sûr que je comprends parfaitement. Pourriez-vous la reformuler? Je suis en supposant que vous devez savoir que si vous ne voulez pas passer une valeur pour le mot-clé? Si c'est le cas, il suffit de ne pas définir la clé et sa valeur dans le dictionnaire. À partir du mot-clé, si vous obtenez la valeur de cette clé, il va le récupérer car Aucun et puis si la condition n'est satisfait, vous pouvez l'appeler ce que le mot clé que vous avez besoin.
Cela a une erreur -- si la valeur du dictionnaire de la chaîne littérale
None
il va la traiter comme si elle n'existe pas. Par exemple, le changementHiking
àNone
.Vous avez une erreur de syntaxe dans votre exemple, vous avez besoin de deux ou plusieurs espaces suivants
...
.J'ai un grand dict (enregistrement complet) avec des clés qui peuvent être dicts (
author
aemail
&name
). J'ai des mots clés pour définir les champs, comme la mise enauthor.email
. Je veux avoir un mot-clé pour obtenir un champ qui est un dict, ou un vide dict lorsque la clé n'est pas là OU la valeur estNone
. Puis j'ai mis mon champ à l'intérieur que dict. Doncset author email
, obtient laauthor
champ , ou un vide dict à l'aide deGet This Value From Dictionary
puis définit le champ e-mail.OriginalL'auteur ash9209