如何在机器人框架中将参数直接从json文件传递给关键字?

时间:2019-02-02 14:36:54

标签: json python-2.7 robotframework

我有一个这样的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文件中获取属性,并直接将诸如username,password,phonenumber这样的参数传递给上述关键字。 / p>

2)如何为该逻辑编写关键字,以便我们仅更改json文件以添加更多属性,例如xyz,abc,我们将添加任意数量的属性,它将自动获取,并且关键字为我们提供所需的结果所有属性,无论我们在json文件中正在修改。

1 个答案:

答案 0 :(得分:3)

如果我对您的理解正确,那么您的问题摘要是:a)如何以这种形式在Robotframework中读取和解析json文件,以及b)将每条记录的属性传递给此关键字。

可以使用Get File从文件系统读取文件。

一个人可以使用python的json模块(更具体地说是loads()方法)读取json文件-它需要一个字符串,并返回一个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