Robot Framework 是一种通用的自动化测试框架,它支持使用关键字驱动的测试,并且易于学习和使用。Robot Framework 提供了丰富的标准库,而 JSONLibrary 就是其中之一,用于处理 JSON 数据。
在开始使用 JSONLibrary 之前,首先需要确保它已被正确安装。可以使用 pip 进行安装:
bash
pip install robotframework-jsonlibrary
在 Robot Framework 的测试套件中,通过导入 JSONLibrary 来启用对 JSON 数据的处理:
robot
*** Settings ***
Library JSONLibrary
这个关键字用于验证给定的字符串是否是有效的 JSON 数据:
robot
*** Test Cases ***
Check If Valid JSON
${json_string} Set Variable {"key": "value"}
Should Be Valid JSON ${json_string}
在上述例子中,我们设置了一个 JSON 字符串,并使用 Should Be Valid JSON 来验证它是否有效。
这个关键字用于从 JSON 数据中获取特定键的值:
robot
*** Test Cases ***
Get Value From JSON
${json_string} Set Variable {"name": "John", "age": 30}
${name} Get Value From Json ${json_string} name
Log Name: ${name}
在上述例子中,我们通过 Get Value From Json 关键字获取了 JSON 数据中键为 name 的值。
这个关键字用于验证两个 JSON 字符串是否匹配:
robot
*** Test Cases ***
Check JSON Matching
${expected} Set Variable {"name": "John", "age": 30}
${actual} Set Variable {"name": "John", "age": 30}
Should Match Json ${actual} ${expected}
在上述例子中,我们使用 Should Match Json 关键字验证了两个 JSON 字符串是否匹配。
JSONLibrary 提供了一些关键字,可以进行更复杂的 JSON 数据操作,包括更新、删除等。以下是一些关键字的使用示例:
这个关键字用于更新 JSON 数据中指定键的值:
robot
*** Test Cases ***
Update JSON Value
${json_string} Set Variable {"name": "John", "age": 30}
${updated_json} Update Value In Json ${json_string} age 31
Should Not Be Equal As Strings ${json_string} ${updated_json}
在上述例子中,我们使用 Update Value In Json 关键字将 JSON 数据中键为 age 的值从 30 更新为 31。
这个关键字用于从 JSON 数据中删除指定键:
robot
*** Test Cases ***
Remove JSON Member
${json_string} Set Variable {"name": "John", "age": 30}
${json_after_removal} Remove Member From Json ${json_string} age
Should Not Contain ${json_after_removal} age
在上述例子中,我们使用 Remove Member From Json 关键字删除了 JSON 数据中的键 age。
这个关键字用于设置 JSON 数据中指定键的值,如果键不存在,则创建该键:
robot
*** Test Cases ***
Set Value In JSON
${json_string} Set Variable {"name": "John"}
${updated_json} Set Value In Json ${json_string} age 30
Should Not Be Equal As Strings ${json_string} ${updated_json}
在上述例子中,我们使用 Set Value In Json 关键字设置了 JSON 数据中键为 age 的值为 30。
robot
*** Settings ***
Library JSONLibrary
*** Test Cases ***
Read and Modify JSON
${json_data}= Get File path/to/your/file.json
Log Original JSON: ${json_data}
${value}= Get Value From JSON ${json_data} $.company
Log Company Name: ${value}
${modified_json}= Set Value To JSON ${json_data} $.company NewCompanyName
Log Modified JSON: ${modified_json}
Save JSON To File ${modified_json} path/to/your/modified_file.json
在这个例子中:
使用 Get File 关键字读取 JSON 文件的内容。
使用 Get Value From JSON 关键字根据 JSONPath 表达式获取特定字段的值。
使用 Set Value To JSON 关键字修改 JSON 文件的特定字段的值。
使用 Save JSON To File 关键字保存修改后的 JSON 数据到新的文件中。
请确保根据你的实际 JSON 结构和需求,调整 JSONPath 表达式和要修改的字段值。JSONLibrary 还提供了其他关键字,如 Get Keys From JSON、Remove From JSON 等,可以根据需要进行使用。
5、遍历查找更新json文件的内容
在这个例子中:
*** Settings ***
Library JSONLibrary
*** Variables ***
${json_file} path/to/your/file.json
*** Test Cases ***
Traverse and Update JSON
${json_data}= Get File ${json_file}
${modified_json}= Call Method Traverse and Update ${json_data}
Save JSON To File ${modified_json} path/to/your/updated_file.json
*** Keywords ***
Traverse and Update
[Arguments] ${json_data}
Log Traversing and updating JSON...
:FOR ${key} IN @{json_data.keys()}
\ ${value}= Get Value From JSON ${json_data} ${key}
\ Run Keyword If '${value}' == 'old_value' Set Value To JSON ${json_data} ${key} new_value
\ Run Keyword If '${value}' is dictionary Run Keyword Traverse and Update ${value}
[Return] ${json_data}