Как подсчитать появление определенного key в полезной нагрузке json в среде robot?

В настоящее время я хочу запустить цикл for. Однако я не знаю, каков предел моего списка. Итак, чтобы обнаружить, что я хочу подсчитать количество вхождений определенного KEY в этом случае accountId, который представляет собой список в формате JSON. Как подсчитать появление KEY в данных JSON?

{"cardAccountList":[
{
"accountId": "1234",
},
{
"accountId": "1111"
}]} 

Пожалуйста, поделитесь минимальным объемом кода, вводом и ожидаемым выводом, которые необходимы для минимальный воспроизводимый пример.

timgeb 31.10.2018 11:42

Пожалуйста, предоставьте сокращенные демонстрационные данные, ваш подход и аргументы «что я получаю» и «что я должен получить» с аргументами.

Patrick Artner 31.10.2018 11:43

И какое отношение имеет RobotFramework к этому вопросу? Думаю, это "чистый" вопрос питона.

kosist 31.10.2018 11:45

@kosist это вообще не вопрос питона. Мое требование относится исключительно к структуре роботов. Так что сначала очистите эту путаницу

Jacob 31.10.2018 11:58

Возможный дубликат Как найти конкретное значение json по ключу?

martineau 31.10.2018 12:06

@martineau Я не хочу использовать Python. Мне нужно использовать только Robot framework :)

Jacob 31.10.2018 12:17

sangram: Поскольку Каркас робота написан с использованием языка программирования Python, связанный вопрос выглядел как совпадение. Это также лучший язык для реализации надстройки (согласно связанной статье), если это имеет значение.

martineau 31.10.2018 12:33

@martineau Я полностью согласен с тем, что RF написан на Python, но мне интересно, действительно ли возможно использовать функции Python или встроенные функции в структуре Robot. Я не нашел ни одного учебника или библиотеки, где мы могли бы использовать скрипт Python в скриптах роботов.

Jacob 31.10.2018 13:10
0
8
1 640
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

То, что вы хотите сделать, можно сделать в Robot Framework, но если ваша реальная проблема более сложна, подумайте о пользовательском ключевом слове Python. То, что вы можете, не всегда означает, что вы должны это делать.

В приведенном ниже файле json я удалил запятую после "accountId": "1234". Он загружает json из файла, а затем преобразует его в объект (Словарь / Список / Словарь), а затем циклически просматривает список, чтобы проверить подкаталог на наличие ключа accountId. Подсчитывает количество раз, когда он его находит.

json.json

{"cardAccountList":[
    {
    "accountId": "1234"
    },
    {
    "accountId": "1111"
    }
 ]
} 

И со следующим кодом робота:

*** Settings ***
Library    OperatingSystem    
Library    Collections    

*** Test Cases ***
TC
    ${json_string}    Get File        ./json.json
    ${json_object}    evaluate        json.loads('''${json_string}''')    json    
    ${count}          Set Variable    ${0}

    ${key_count}    Get Length    ${json_object["cardAccountList"]}

    :FOR    ${item}    IN    @{json_object["cardAccountList"]}
    \    ${status}    Run Keyword And Return Status    
    \                 ...        Dictionary Should Contain Key    ${item}     accountId
    \    
    \    ${count}     Set Variable If    ${status}    ${count+1}    ${count}

    Log To Console    \nCount of accountId is: "${count}"

выводит консольный журнал:

==============================================================================
TC                                                                    
Count of accountId is: "2"
| PASS |
------------------------------------------------------------------------------
Folder.Json                                                           | PASS |
1 critical test, 1 passed, 0 failed
1 test total, 1 passed, 0 failed

большое спасибо @A. Kootstra. Я попробую и дам вам знать.

Jacob 01.11.2018 04:22

Другие вопросы по теме