Robotframework:如何在testcase中指定参数的关键字中创建json

时间:2016-04-26 08:10:41

标签: robotframework

我在以下环境中使用机器人框架。

  • Python 2.7.6
  • robotframework 2.8.7
  • Ubuntu 14.04.3 LTS

我想从keyvalue到Post请求创建json。 我尝试了以下模式和 测试创建Json1正常工作,但测试创建Json2没有。

*** Settings ***
Library    Collections
Library    json

*** Variables ***
${NAME}    XXXX
${ID}    YYYY

*** Test Cases ***
Test Create Json1
    ${req_dict}    Create Dictionary    name=${NAME}    id=${ID}
    ${req_json}    Json.Dumps    ${req_dict}
    Log To Console    *** Test Create Json1 Result ***
    Log To Console    ${req_json}

Test Create Json2
    ${resp}    Prepare Json Keyword    name=${NAME}    id=${ID}
    Log To Console    *** Test Create Json2 Result ***
    Log To Console    ${resp}

*** Keywords ***
Prepare Json Keyword
    [Arguments]    @{args}
    ${req_dict}    Create Dictionary    @{args}
    ${req_json}    Json.Dumps    ${req_dict}
    [Return]    ${req_json}

输出

Test Create Json1
{"name": "XXXX", "id": "YYYY"}

Test Create Json2
{"name=XXXX": "id=YYYY"}

我想在关键字中创建json,如何更改Test Create Json2?

1 个答案:

答案 0 :(得分:1)

您的根本问题是在字典创建中。在测试1中,您可以正确创建字典。它需要name = parameter对。

在测试2中,您传递的是“NAME = XXXX”“ID = YYYY”字符串。这将创建一个字典,其键为“NAME = XXXX”,值为“ID = YYYY”。

您需要拆分字符串并将其设置为字典,如下所示:

*** Settings ***
Library    Collections
Library    json
Library    String

*** Variables ***
${NAME}    XXXX
${ID}    YYYY

*** Test Cases ***
Test Create Json1
    ${req_dict}    Create Dictionary    name=${NAME}    id=${ID}
    ${req_json}    Json.Dumps    ${req_dict}
    Log To Console    *** Test Create Json1 Result ***
    Log To Console    ${req_json}

Test Create Json2
    ${resp}    Prepare Json Keyword    name=${NAME}    id=${ID}
    Log To Console    *** Test Create Json2 Result ***
    Log To Console    ${resp}

*** Keywords ***
Prepare Json Keyword
    [Arguments]    @{args}
    ${req_dict}    Create Dictionary
    :FOR     ${pair}    IN     @{args}
    \     ${key}    ${value}=     Split String    ${pair}    =
    \     Set To Dictionary    ${req_dict}    ${key}=${value}
    ${req_json}    Json.Dumps    ${req_dict}
    [Return]    ${req_json}