1
votes

Comment puis-je extraire une valeur en utilisant une autre valeur dans json dans le framework robot

Dans le cadre de la vérification dans Robot Framework, j'ai les données suivantes (stockées en tant que $ {resp}) comme réponse à la requête:

${json_resp} =    Set Variable    ${resp.json()}
${numberOfElements}  set variable  ${json_resp['numberOfElements']}
should be equal as numbers  ${numberOfElements}  2

À partir du json ci-dessus, je souhaite extraire l'id dont accId est 123456789. Comment puis-je utiliser les paramètres de condition pour rechercher une valeur en utilisant toute autre valeur du json. J'ai implémenté ce code pour vérifier numberFfElemets

{
   "numberOfElements": 2,
   "data": [
      {
         "id": "1",
         "accId": "123456789",
         "total": 13,
         "isEnabled": false
      },
      {
         "id": "2",
         "accId": "987654321",
         "total": 52,
         "isEnabled": false
      }
   ],
   "last": true
}


6 commentaires

Qu'avez-vous déjà essayé et qu'avez-vous observé?


comme mentionné par @ A.Kootstra, les gens sont prêts à aider dans Stack Overflow tant que vous montrez ce que vous avez essayé et comment vous n'avez pas réussi à atteindre votre objectif. Cela aide à comprendre ce que vous essayez vraiment de faire.


Modifié pour le que j'ai essayé .... Veuillez vérifier maintenant


Cet exemple de code fonctionne-t-il comme prévu pour vous?


Au départ, j'ai utilisé cette approche pour vérifier le numberOfElements. Mais maintenant, je veux vérifier l'identifiant lié à un accountId spécifique. C'est pourquoi j'ai besoin de votre aide.


J'ai utilisé "$ .. [? (@. AccId == '123456789')]. Id" pour vérifier la même chose en utilisant jmeter. Mais pas capable de l'implémenter dans le cadre du robot


3 Réponses :


0
votes

La simple étape consiste à convertir votre json en dictionnaire et dictionnaire de pensée en boucle.

 ${json_resp} =    Set Variable    ${resp.json()}
 ${json}=    evaluate    json.loads('''${json_resp}''')    json
  :FOR  ${i}  IN  @{json['data']}
  \   log to Console      ${i['accId']}

Vous devriez alors pouvoir accéder à accId .

p>


2 commentaires

J'ai essayé cette méthode, j'obtiens cette erreur car la réponse json contient des guillemets simples a échoué: JSONDecodeError: Le nom de la propriété attend entre guillemets doubles: ligne 1 colonne 2 (char 1)


quelle est votre demande réelle?



1
votes

Vous avez la solution suivante à ce problème et cela fonctionne pour moi:

Get UUID With Id
    [Arguments]  ${content_body}
    ${uuid}=  Get From Dictionary  ${content_body}  uuid
    [Return]  ${uuid}
${uuid}=  set variable
:FOR  ${i}  IN  @{json_resp['data']}
\   ${uuid}=  run keyword if  '${i['id']}'=='123456789'     get uuid with id   ${i}
    log to console  ${uuid}


0 commentaires

0
votes

Code corrigé

'Quitter pour la boucle' aide à ne pas réécrire $ {id} en aucun

    *** Test Cases *** 
   Test1
        :FOR  ${i}  IN  @{json_resp()['data']}
        \   ${id}=  run keyword if  '${i['accId']}'=='123456789'     Get Id   ${i}
        \   run keyword if   '${i['accId']}'=='123456789'    Exit For Loop
            log to console  ${id}
    
    *** Keywords ***
    Get Id
        [Arguments]  ${content_body}
        ${idf}=  Get From Dictionary  ${content_body}  id
        [Return]  ${idf}


0 commentaires