Разбор Json в Robot Framework - PullRequest
       9

Разбор Json в Robot Framework

0 голосов
/ 28 августа 2018
{
  "data": [
    {
      "name": "John",
      "mobile_phone": false,
      "carrier": "none"
    },
    {
      "name": "Jim",
      "mobile_phone": true,
      "carrier": "T-Mobile"
    }
  ],
  "result": 0
}

Привет, можно ли будет проанализировать такой ответ JSON в Robot Framework таким образом, чтобы я создавал своего рода «подкаталог» для каждого значения? Я хотел бы отделить Джона от Джима и получить, например, информацию о перевозчике только для Джима (через другой запрос get позже в тесте). Спасибо !

1 Ответ

0 голосов
/ 28 августа 2018

Скажем, исходный текст (json) хранится в переменной ${source data}:

${source data}=    Evaluate     json.loads("""${source data}""")    json
# the variable ${source data} is now a python dictionary - the same as the original json, but only - accessible as dictionary in robotframwork

${all data members}=    Set Variable     ${source data['data']}

${user_phone}=    Create Dictionary

:FOR    ${member}     IN      @{all data members}   # iterate through the 'data', each ${member} is a dictionary in the source list
\    ${name}=    Get From Dictionary   ${member}     name    # will assign to the variable ${name} the value of the key 'name'; if there is no such key - the keyword will fail
\    Log    The user ${name} has a mobile phone: ${member['mobile_phone']}    # Will print "The user John has a mobile phone: False", "The user Jim has a mobile phone: True"
\    Set To Dictionary    ${user_phone}    ${name}   ${member['mobile_phone']}    # will fill-in a dictionary in the form "name": boolean_does_the_person_has_phone

Этот пример кода с комментариями показывает, как вы можете работать с объектами json / dictionary в роботизированной структуре.

Ключевое слово Evaluate в строке 1 запускает произвольный код Python (его первый аргумент, который вызывает метод loads() модуля json); 2-й аргумент - любые дополнительные библиотеки, которые нужно импортировать, например, json в нашем случае.

4-я строка Set Variable показывает синтаксис расширенной переменной - в этом случае, зная, что source data - это словарь, получая значение этого ключа. В конце выполнения этой строки переменная all data members является списком, который находится внутри ключа данных «json».

Строка 8 начинает цикл над тем же списком; переменная member будет содержать значение каждого члена списка на каждой итерации.

В строке 9 используется другой (более ортодоксальный) способ получения значения ключа словаря - с помощью ключевого слова Получить из словаря из библиотеки коллекций.

Строка 10 регистрирует сообщение, используя обычные (name) и расширенные синтаксические (member['mobile_phone']) переменные.

И в строке 11 создается словарная запись, где name используется в качестве ключа, а логическое member['mobile_phone'] в качестве значения (если ключ с таким именем уже существует - он перезаписывается) , Это ключевое слово снова в библиотеке Collections .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...