Robotframework:如何在测试用例中指定参数的关键字中创建 json

Robotframework: how to create json in keywords with specifying arguments in testcase

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

我想从键值到 Post 请求创建 json。 我尝试了以下模式和 Test Create Json1 正常工作,但 Test Create 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 中,您正确地创建了字典。它需要名称=参数对。

在测试 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}