Как передать аргументы непосредственно из файла JSON в ключевое слово в рамках робота? - PullRequest
0 голосов
/ 02 февраля 2019

У меня есть такой файл Json. PFB код:

"properties " : {
    "xyz" : {
        "username" : "abc@gmail.com",
        "password" : "abc@123",
        "phonenumber" : "1235",
    },
      "ABC" : {
        "username" : "abc@gmail.com",
        "password" : "abc@123",
        "phonenumber" : "1345",
    },

Ключевое слово будет выглядеть так:

Do operation for properties
  [Arguments]  ${username}  ${password}  ${phonenumber}
  Log  ${username}
  Log  ${password} 
  Log  ${phonenumber}

Мои вопросы:

1)Файл json содержит так много вещей, но мне нужно извлечь только свойства из файла. Как я возьму часть свойств из всего файла json и напрямую передам аргументы, такие как имя пользователя, пароль, номер телефона, в ключевое слово, упомянутое выше.

2) Как написать ключевое слово для этой логики так, чтобы мы изменили только json-файл для добавления большего количества свойств, кроме xyz, abc, мы добавим столько свойств, сколько захотим, и он автоматически выберет, а ключевое слово даст нам желаемый результат для всех свойств независимо от того,мы вносим изменения в файл JSON.

1 Ответ

0 голосов
/ 02 февраля 2019

Если я правильно вас понимаю, ваш вопрос сводится к следующему: а) как прочитать и проанализировать файл json в Robotframework в этой форме, и б) передать атрибуты каждой записи этому ключевому слову.

Файл может быть прочитан из файловой системы с помощью Get File.

Можно прочитать файл json с помощью модуля json python, более конкретно loads() метод - он принимает строку и возвращает объект python.

Ваш образец "json" является совершенно недопустимым json, поэтому давайте представим, что "свойства" находятся где-то (на 3 уровня глубже) внутри файла.

${the file as string}=    Get File    c:\\the\\path\\to\\the\\file.json
${parsed}=    Evaluate    json.loads("""${the file as string}""")    json
${properties}=    Set Variable    ${parsed["top"]["child"]["properties"]}

А теперь переменная properties представляет собой словарь с этими двумя ключами - «ABC» и «xyz»;вы просто перебираете его и передаете подключи каждого из словарей в ключевое слово.

FOR    ${key}    IN    @{properties}
  ${sub dict}=    Get From Dictionary    ${properties}    ${key}
  Do operation for properties    ${sub dict}[username]    ${sub dict}[password]    ${sub dict}[phonenumber]
END
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...