【问题标题】:Robotframework: how to create json in keywords with specifying arguments in testcaseRobotframework:如何在关键字中创建json并在测试用例中指定参数
【发布时间】:2016-04-27 15:28:34
【问题描述】:

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

  • Python 2.7.6
  • 机器人框架 2.8.7
  • Ubuntu 14.04.3 LTS

我想创建从 keyvalue 到 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"}

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

【问题讨论】:

    标签: robotframework


    【解决方案1】:

    您的根本问题在于字典的创建。在测试 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}
    

    【讨论】:

    • 我理解传递的@{args} 被解释为“字符串”,所以我应该在关键字中重新制作字典。您的示例工作正常。谢谢!
    猜你喜欢
    • 2019-02-22
    • 2021-06-19
    • 2018-01-17
    • 2014-05-06
    • 2021-11-07
    • 2020-05-09
    • 2023-03-22
    • 1970-01-01
    • 2015-05-01
    相关资源
    最近更新 更多