Robotframework:如何在测试用例中指定参数的关键字中创建 json
Robotframework: how to create json in keywords with specifying arguments in testcase
我在以下环境使用机器人框架。
- Python 2.7.6
- 机器人框架 2.8.7
- Ubuntu 14.04.3 LTS
我想从键值到 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}
我在以下环境使用机器人框架。
- Python 2.7.6
- 机器人框架 2.8.7
- Ubuntu 14.04.3 LTS
我想从键值到 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}