Vid*_*a S 13 json robotframework
我有一个Json文件,其中有一个字段,我需要编辑并保存文件以供下次使用.
但是我需要编辑的字段如下所示,
我需要在运行时随机生成该字段,我将在变量中捕获并将其传递给此json特定键"dp",然后保存json.
保存的json将用于REST POST URL.
{
"p": "10",
"v": 100,
"vt": [
{
"dp": "Field to be edited"(integer value) ,
]
}
Run Code Online (Sandbox Code Playgroud)
请帮帮我,我正在使用ROBOT框架,我需要在运行时更新json字段.
Bry*_*ley 24
最简单的解决方案是编写一个可以为您更改值的python关键字.但是,您可以通过执行以下步骤使用robot关键字解决此问题:
Python有一个用于处理JSON数据的模块(json).您可以使用evaluate关键字将JSON字符串转换为python字典,使用该模块的loads(load string)方法.
假设您的JSON数据位于名为的机器人变量中${json_string},您可以将其转换为python字典,如下所示:
${json}= evaluate json.loads('''${json_string}''') json
Run Code Online (Sandbox Code Playgroud)
有了上述内容,${json}现在保存对包含所有json数据的字典的引用.
机器人附带的Collections库有一个名为set to dictionary的关键字,可用于设置字典元素的值.在这种情况下,您需要更改嵌套在vtJSON对象元素内的字典的值.我们可以使用机器人的扩展变量语法来引用嵌套字典.
例如:
set to dictionary ${json["vt"]} dp=the new value
Run Code Online (Sandbox Code Playgroud)
有了它, ${json}现在有了新的价值.但是,它仍然是一个python字典而不是JSON数据,所以还有一个步骤.
将字典转换回JSON与第一步相反.即,使用json模块的dumps(dump string)方法:
${json_string}= evaluate json.dumps(${json}) json
Run Code Online (Sandbox Code Playgroud)
有了它,${json_string}将包含带有修改数据的有效JSON字符串.
以下是一个完整的工作示例.在替换新值之前和之后将打印json字符串:
*** Settings ***
Library Collections
*** Test Cases ***
Example
${json_string}= catenate
... {
... "p": "10",
... "v": 100,
... "vt": {
... "dp": "Field to be edited"
... }
... }
log to console \nOriginal JSON:\n${json_string}
${json}= evaluate json.loads('''${json_string}''') json
set to dictionary ${json["vt"]} dp=the new value
${json_string}= evaluate json.dumps(${json}) json
log to console \nNew JSON string:\n${json_string}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
39401 次 |
| 最近记录: |