当前位置: 首页 > news >正文

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}

相关文章:

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

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

python 循环解压 解压多重压缩包

在实际数据中,经常会有压缩包套压缩包的情况,并且有可能出现“zip”压缩包下面套“tar”的可能。 你可以运行后面的代码,来完成自动解压。代码会不断检查folder_a_path 文件夹下是否还有压缩包。目前支持zip、rar、tar、7z等四种格式的压缩文…...

基于C#制作一个连连看小游戏

基于C#制作一个连连看小游戏,实现:难易度选择、关卡选择、倒计时进度条、得分计算、音效播放等功能。 目录 引言游戏规则开发环境准备游戏界面设计游戏逻辑实现图片加载与显示鼠标事件处理游戏优化与扩展添加关卡与难度选择说明</...

Android-System 根据包名查找已安装应用apk方法

1、根据包名查找应用的安装路径 dumpsys package packageName | grep Path 例如&#xff1a; kona:/ # dumpsys package com.yw_pt.oshnoh | grep PathcodePath/data/app/com.yw_pt.oshnoh-N4rPqGh58weRjMpA1q3evwresourcePath/data/app/com.yw_pt.oshnoh-N4rPqGh58weRjMpA1q3…...

洛谷-P4124题-手机号码-Java

题目 题目链接&#xff1a; https://www.luogu.com.cn/problem/P4124 分析 给定两个长度为11位的数字&#xff0c;代表两个区间 [L,R] 需要编写程序来计算出&#xff0c;这两个区间内满足要求的数字个数。这样的题一般来说就是数位dp题。首先我们可以根据容斥原理 [0,R]中满…...

仅使用 Python 创建的 Web 应用程序(前端版本)第08章_商品详细

在本章中,我们将实现一个产品详细信息页面。 完成后的图像如下。 Model、MockDB、Service都是在产品列表页实现的,所以创建步骤如下。 No分类内容1Page定义PageId并创建继承自BasePage的页面类2Application将页面 ID 和页面类对添加到 MultiPageApp 的页面中Page:定义PageI…...

Stable Diffusion 长视频真人动画风格互转

Stable Diffusion Temporal-Kit和EbSynth 从娱乐到商用 1. Temporal Kit 和 EbSynth1.1 提取关键帧1.2 关键帧风格迁移1.3 生成序列帧2. 真人转卡通3. 卡通转真人4. 编辑技巧5. ControlNet + TemporalNet + 达芬奇Fusion6. Rerender A Video7. DiffSynth-Studio基于SD的风格化…...

精要图示:园区金融数字化服务蓝图,以园区为支点推动信贷业务增长

作为企业集聚地&#xff0c;园区已然成为银行业夯实客群基础的重要切口&#xff0c;各大行陆续围绕园区场景创新金融产品&#xff0c;以期抢跑园区金融新赛道、把握新增量。 启信慧眼首推一站式【园区金融】数字化服务方案&#xff0c;该方案同时支持启信天元私有化部署&#x…...

2024 中国(南京)国际口腔设备器械博览会

2024 中国&#xff08;南京&#xff09;国际口腔设备器械博览会 时间&#xff1a;2024 年 7 月 18-20 日 地点&#xff1a;南京国际展览中心 WeChat_20230512134641 主办单位: 南京民营口腔医疗协会 北京铭曼国际展览有限公司 承办单位: 北京铭曼国际展览有限公司 展会介绍 随…...

【MyBatis】快速入门MyBatis(保姆式教学),你值得一看

文章目录 &#x1f4c4;前言一. Mybatis简介✈️1. 什么是Mybatis&#x1f680;2. 为什么使用Mybatis 二. Mybatis快速入门&#x1f346;1. mybatis使用前准备1.1 创建springboot项目并引入相关依赖1.2 在 application.ym中进行数据源的配置1.3 创建数据表&#xff0c;准备表数…...

git pull代码时候报错:error: cannot open .git/FETCH_HEAD: Permission denied

git pull代码时候报错&#xff1a; error: cannot open .git/FETCH_HEAD: Permission denied 原因&#xff1a; 当前登录用户没有修改目录的权限。 解决办法&#xff1a; 修改当前目录权限 1. whoami 查看当前登录用户 xxx$ whoami 假设上边查询登陆账号为&#xff1a;csd…...

shell - 正则表达式和grep命令和sed命令

一.正则表达式概述 1.正则表达式定义 1.1 定义 使用字符串描述、匹配一系列符合某个规则的字符串 1.2 了解 普通字符&#xff1a; 大小写字母、数字、标点符号及一些其它符号元字符&#xff1a; 在正则表达式中具有特殊意义的专用字符 1.3 层次分类 基础正则表达式扩展正…...

datawhale 大模型学习 第十二章-大模型环境影响

环境影响概述 气候变化&#xff1a;大语言模型&#xff08;LLM&#xff09;的训练和运行需要大量计算资源&#xff0c;导致显著的能源消耗和温室气体排放&#xff0c;加剧气候变化。能源消耗&#xff1a;训练LLM的计算过程消耗大量电力&#xff0c;间接增加了化石燃料的使用&a…...

Qt WebEngine模块使用(开发环境安装和程序开发)

一、Qt WebEngine Qt WebEngine_hitzsf的博客-CSDN博客 Qt WebEngine模块提供了一个Web浏览器引擎&#xff0c;可以轻松地将万维网上的内容嵌入到没有本机Web引擎的平台上的Qt应用程序中。Qt WebEngine提供了用于渲染HTML&#xff0c;XHTML和SVG文档的C 类和QML类型&#xff…...

网络体系结构 和网络原理之UDP和TCP

目录 网络分层 一. 应用层 http协议 二. 传输层 1. 介绍 2.UDP协议 (1)组成 (2)细节 3.TCP协议 (1)特性如下链接&#xff1a; (2)组成 (3)特点 三. 网络层 四. 数据链路层 1.介绍 2.以太网协议 3.mac地址和ip地址 五. 物理层 DNS 网络分层 一. 应用层 应用程序 现成的…...

将Android APP安装到sm8550 HDK的NVMe SSD

APP存储路径 在Android中&#xff0c;App在运行过程中主要访问的数据路径通常包括以下几个方面&#xff1a; 内部存储&#xff08;Internal Storage&#xff09;&#xff1a;App会访问其私有的内部存储空间&#xff0c;这个空间通常位于&#xff1a; /data/data/<package…...

(Arcgis)Python编程批量将HDF5文件转换为TIFF格式并应用地理转换和投影信息

国家青藏高原科学数据中心下载中国1千米分辨率逐日全天候地表土壤水分数据集&#xff08;2003-2022&#xff09; 问题&#xff1a;数据在arcgis打开特别大&#xff0c;无法和矢量数据重合&#xff0c;没有设置地理坐标系 数据在网站上提供了投影信息&#xff0c;提示可以进行py…...

Linux:进度条的创建

目录 使用工具的简单介绍&#xff1a; \r &#xff1a; fflush &#xff1a; 倒计时的创建&#xff1a; 倒计时的工作原理&#xff1a; 进度条的创建&#xff1a; 不同场景下、打印任意长度的进度条&#xff1a; main .c procbor.c 测试效果&#xff1a; 使用工具…...

treeview

QML自定义一个TreeView&#xff0c;使用ListView递归 在 Qt5 的 QtQuick.Controls 2.x 中还没有 TreeView 这个控件&#xff08;在 Qt6 中出了一个继承自 TableView 的 TreeView&#xff09;&#xff0c;而且 QtQuick.Controls 1.x 中的也需要配合 C model 来自定义&#xff0c…...

Android开发中自定义View实现RecyclerView下划线

本篇文章主要讲解的是有关RecyclerView下划线的使用&#xff0c;主要有几个方法&#xff0c;具体如下&#xff1a; 第一种方式&#xff1a;网格分割线 public class GridDivider extends RecyclerView.ItemDecoration { private Drawable mDividerDarwable; private i…...

【Python】 -- 趣味代码 - 小恐龙游戏

文章目录 文章目录 00 小恐龙游戏程序设计框架代码结构和功能游戏流程总结01 小恐龙游戏程序设计02 百度网盘地址00 小恐龙游戏程序设计框架 这段代码是一个基于 Pygame 的简易跑酷游戏的完整实现,玩家控制一个角色(龙)躲避障碍物(仙人掌和乌鸦)。以下是代码的详细介绍:…...

【人工智能】神经网络的优化器optimizer(二):Adagrad自适应学习率优化器

一.自适应梯度算法Adagrad概述 Adagrad&#xff08;Adaptive Gradient Algorithm&#xff09;是一种自适应学习率的优化算法&#xff0c;由Duchi等人在2011年提出。其核心思想是针对不同参数自动调整学习率&#xff0c;适合处理稀疏数据和不同参数梯度差异较大的场景。Adagrad通…...

【HarmonyOS 5.0】DevEco Testing:鸿蒙应用质量保障的终极武器

——全方位测试解决方案与代码实战 一、工具定位与核心能力 DevEco Testing是HarmonyOS官方推出的​​一体化测试平台​​&#xff0c;覆盖应用全生命周期测试需求&#xff0c;主要提供五大核心能力&#xff1a; ​​测试类型​​​​检测目标​​​​关键指标​​功能体验基…...

【android bluetooth 框架分析 04】【bt-framework 层详解 1】【BluetoothProperties介绍】

1. BluetoothProperties介绍 libsysprop/srcs/android/sysprop/BluetoothProperties.sysprop BluetoothProperties.sysprop 是 Android AOSP 中的一种 系统属性定义文件&#xff08;System Property Definition File&#xff09;&#xff0c;用于声明和管理 Bluetooth 模块相…...

Java求职者面试指南:Spring、Spring Boot、MyBatis框架与计算机基础问题解析

Java求职者面试指南&#xff1a;Spring、Spring Boot、MyBatis框架与计算机基础问题解析 一、第一轮提问&#xff08;基础概念问题&#xff09; 1. 请解释Spring框架的核心容器是什么&#xff1f;它在Spring中起到什么作用&#xff1f; Spring框架的核心容器是IoC容器&#…...

NXP S32K146 T-Box 携手 SD NAND(贴片式TF卡):驱动汽车智能革新的黄金组合

在汽车智能化的汹涌浪潮中&#xff0c;车辆不再仅仅是传统的交通工具&#xff0c;而是逐步演变为高度智能的移动终端。这一转变的核心支撑&#xff0c;来自于车内关键技术的深度融合与协同创新。车载远程信息处理盒&#xff08;T-Box&#xff09;方案&#xff1a;NXP S32K146 与…...

面向无人机海岸带生态系统监测的语义分割基准数据集

描述&#xff1a;海岸带生态系统的监测是维护生态平衡和可持续发展的重要任务。语义分割技术在遥感影像中的应用为海岸带生态系统的精准监测提供了有效手段。然而&#xff0c;目前该领域仍面临一个挑战&#xff0c;即缺乏公开的专门面向海岸带生态系统的语义分割基准数据集。受…...

6个月Python学习计划 Day 16 - 面向对象编程(OOP)基础

第三周 Day 3 &#x1f3af; 今日目标 理解类&#xff08;class&#xff09;和对象&#xff08;object&#xff09;的关系学会定义类的属性、方法和构造函数&#xff08;init&#xff09;掌握对象的创建与使用初识封装、继承和多态的基本概念&#xff08;预告&#xff09; &a…...

网页端 js 读取发票里的二维码信息(图片和PDF格式)

起因 为了实现在报销流程中&#xff0c;发票不能重用的限制&#xff0c;发票上传后&#xff0c;希望能读出发票号&#xff0c;并记录发票号已用&#xff0c;下次不再可用于报销。 基于上面的需求&#xff0c;研究了OCR 的方式和读PDF的方式&#xff0c;实际是可行的&#xff…...

持续交付的进化:从DevOps到AI驱动的IT新动能

文章目录 一、持续交付的本质&#xff1a;从手动到自动的交付飞跃关键特性案例&#xff1a;电商平台的高效部署 二、持续交付的演进&#xff1a;从CI到AI驱动的未来发展历程 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/101f72defaf3493ba0ba376bf09367a2.png)中国…...