7、Json文件的操作总结【robot framework】

1、JSONLibrary简介

Robot Framework 是一种通用的自动化测试框架,它支持使用关键字驱动的测试,并且易于学习和使用。Robot Framework 提供了丰富的标准库,而 JSONLibrary 就是其中之一,用于处理 JSON 数据。

安装 JSONLibrary

在开始使用 JSONLibrary 之前,首先需要确保它已被正确安装。可以使用 pip 进行安装:

bash

pip install robotframework-jsonlibrary

导入 JSONLibrary

在 Robot Framework 的测试套件中,通过导入 JSONLibrary 来启用对 JSON 数据的处理:

robot

*** Settings ***

Library    JSONLibrary

2、简单用法示例

关键字:Should Be Valid JSON

这个关键字用于验证给定的字符串是否是有效的 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 来验证它是否有效。

关键字:Get Value From 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 的值。

关键字:Should Match Json

这个关键字用于验证两个 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 字符串是否匹配。

3、进阶 JSON 数据操作

JSONLibrary 提供了一些关键字,可以进行更复杂的 JSON 数据操作,包括更新、删除等。以下是一些关键字的使用示例:

关键字:Update Value In 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。

关键字:Remove Member From Json

这个关键字用于从 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。

关键字:Set Value In Json

这个关键字用于设置 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。

4、JSON 文件的打开、修改与保存

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文件的内容

在这个例子中:

  1. 使用 Get File 关键字读取 JSON 文件的内容。
  2. 使用 Traverse and Update 自定义关键字进行 JSON 数据的遍历。
  3. 在遍历过程中,使用 Get Value From JSON 获取键值对应的值。
  4. 如果值为 'old_value',则使用 Set Value To JSON 更新为 'new_value'。
  5. 如果值为字典(dictionary),则递归调用 Traverse and Update 关键字。

*** 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}

你可能感兴趣的:(Robot,Framework,json,测试自动化,python)