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文件的内容
在这个例子中:
- 使用 Get File 关键字读取 JSON 文件的内容。
- 使用 Traverse and Update 自定义关键字进行 JSON 数据的遍历。
- 在遍历过程中,使用 Get Value From JSON 获取键值对应的值。
- 如果值为 'old_value',则使用 Set Value To JSON 更新为 'new_value'。
- 如果值为字典(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 例如: 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
题目 题目链接: https://www.luogu.com.cn/problem/P4124 分析 给定两个长度为11位的数字,代表两个区间 [L,R] 需要编写程序来计算出,这两个区间内满足要求的数字个数。这样的题一般来说就是数位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的风格化…...
精要图示:园区金融数字化服务蓝图,以园区为支点推动信贷业务增长
作为企业集聚地,园区已然成为银行业夯实客群基础的重要切口,各大行陆续围绕园区场景创新金融产品,以期抢跑园区金融新赛道、把握新增量。 启信慧眼首推一站式【园区金融】数字化服务方案,该方案同时支持启信天元私有化部署&#x…...
2024 中国(南京)国际口腔设备器械博览会
2024 中国(南京)国际口腔设备器械博览会 时间:2024 年 7 月 18-20 日 地点:南京国际展览中心 WeChat_20230512134641 主办单位: 南京民营口腔医疗协会 北京铭曼国际展览有限公司 承办单位: 北京铭曼国际展览有限公司 展会介绍 随…...
【MyBatis】快速入门MyBatis(保姆式教学),你值得一看
文章目录 📄前言一. Mybatis简介✈️1. 什么是Mybatis🚀2. 为什么使用Mybatis 二. Mybatis快速入门🍆1. mybatis使用前准备1.1 创建springboot项目并引入相关依赖1.2 在 application.ym中进行数据源的配置1.3 创建数据表,准备表数…...
git pull代码时候报错:error: cannot open .git/FETCH_HEAD: Permission denied
git pull代码时候报错: error: cannot open .git/FETCH_HEAD: Permission denied 原因: 当前登录用户没有修改目录的权限。 解决办法: 修改当前目录权限 1. whoami 查看当前登录用户 xxx$ whoami 假设上边查询登陆账号为:csd…...
shell - 正则表达式和grep命令和sed命令
一.正则表达式概述 1.正则表达式定义 1.1 定义 使用字符串描述、匹配一系列符合某个规则的字符串 1.2 了解 普通字符: 大小写字母、数字、标点符号及一些其它符号元字符: 在正则表达式中具有特殊意义的专用字符 1.3 层次分类 基础正则表达式扩展正…...
datawhale 大模型学习 第十二章-大模型环境影响
环境影响概述 气候变化:大语言模型(LLM)的训练和运行需要大量计算资源,导致显著的能源消耗和温室气体排放,加剧气候变化。能源消耗:训练LLM的计算过程消耗大量电力,间接增加了化石燃料的使用&a…...
Qt WebEngine模块使用(开发环境安装和程序开发)
一、Qt WebEngine Qt WebEngine_hitzsf的博客-CSDN博客 Qt WebEngine模块提供了一个Web浏览器引擎,可以轻松地将万维网上的内容嵌入到没有本机Web引擎的平台上的Qt应用程序中。Qt WebEngine提供了用于渲染HTML,XHTML和SVG文档的C 类和QML类型ÿ…...
网络体系结构 和网络原理之UDP和TCP
目录 网络分层 一. 应用层 http协议 二. 传输层 1. 介绍 2.UDP协议 (1)组成 (2)细节 3.TCP协议 (1)特性如下链接: (2)组成 (3)特点 三. 网络层 四. 数据链路层 1.介绍 2.以太网协议 3.mac地址和ip地址 五. 物理层 DNS 网络分层 一. 应用层 应用程序 现成的…...
将Android APP安装到sm8550 HDK的NVMe SSD
APP存储路径 在Android中,App在运行过程中主要访问的数据路径通常包括以下几个方面: 内部存储(Internal Storage):App会访问其私有的内部存储空间,这个空间通常位于: /data/data/<package…...
(Arcgis)Python编程批量将HDF5文件转换为TIFF格式并应用地理转换和投影信息
国家青藏高原科学数据中心下载中国1千米分辨率逐日全天候地表土壤水分数据集(2003-2022) 问题:数据在arcgis打开特别大,无法和矢量数据重合,没有设置地理坐标系 数据在网站上提供了投影信息,提示可以进行py…...
Linux:进度条的创建
目录 使用工具的简单介绍: \r : fflush : 倒计时的创建: 倒计时的工作原理: 进度条的创建: 不同场景下、打印任意长度的进度条: main .c procbor.c 测试效果: 使用工具…...
treeview
QML自定义一个TreeView,使用ListView递归 在 Qt5 的 QtQuick.Controls 2.x 中还没有 TreeView 这个控件(在 Qt6 中出了一个继承自 TableView 的 TreeView),而且 QtQuick.Controls 1.x 中的也需要配合 C model 来自定义,…...
Android开发中自定义View实现RecyclerView下划线
本篇文章主要讲解的是有关RecyclerView下划线的使用,主要有几个方法,具体如下: 第一种方式:网格分割线 public class GridDivider extends RecyclerView.ItemDecoration { private Drawable mDividerDarwable; private i…...
三维GIS开发cesium智慧地铁教程(5)Cesium相机控制
一、环境搭建 <script src"../cesium1.99/Build/Cesium/Cesium.js"></script> <link rel"stylesheet" href"../cesium1.99/Build/Cesium/Widgets/widgets.css"> 关键配置点: 路径验证:确保相对路径.…...
遍历 Map 类型集合的方法汇总
1 方法一 先用方法 keySet() 获取集合中的所有键。再通过 gey(key) 方法用对应键获取值 import java.util.HashMap; import java.util.Set;public class Test {public static void main(String[] args) {HashMap hashMap new HashMap();hashMap.put("语文",99);has…...
【Linux】C语言执行shell指令
在C语言中执行Shell指令 在C语言中,有几种方法可以执行Shell指令: 1. 使用system()函数 这是最简单的方法,包含在stdlib.h头文件中: #include <stdlib.h>int main() {system("ls -l"); // 执行ls -l命令retu…...
Mybatis逆向工程,动态创建实体类、条件扩展类、Mapper接口、Mapper.xml映射文件
今天呢,博主的学习进度也是步入了Java Mybatis 框架,目前正在逐步杨帆旗航。 那么接下来就给大家出一期有关 Mybatis 逆向工程的教学,希望能对大家有所帮助,也特别欢迎大家指点不足之处,小生很乐意接受正确的建议&…...
Ascend NPU上适配Step-Audio模型
1 概述 1.1 简述 Step-Audio 是业界首个集语音理解与生成控制一体化的产品级开源实时语音对话系统,支持多语言对话(如 中文,英文,日语),语音情感(如 开心,悲伤)&#x…...
大学生职业发展与就业创业指导教学评价
这里是引用 作为软工2203/2204班的学生,我们非常感谢您在《大学生职业发展与就业创业指导》课程中的悉心教导。这门课程对我们即将面临实习和就业的工科学生来说至关重要,而您认真负责的教学态度,让课程的每一部分都充满了实用价值。 尤其让我…...
Hive 存储格式深度解析:从 TextFile 到 ORC,如何选对数据存储方案?
在大数据处理领域,Hive 作为 Hadoop 生态中重要的数据仓库工具,其存储格式的选择直接影响数据存储成本、查询效率和计算资源消耗。面对 TextFile、SequenceFile、Parquet、RCFile、ORC 等多种存储格式,很多开发者常常陷入选择困境。本文将从底…...
iOS性能调优实战:借助克魔(KeyMob)与常用工具深度洞察App瓶颈
在日常iOS开发过程中,性能问题往往是最令人头疼的一类Bug。尤其是在App上线前的压测阶段或是处理用户反馈的高发期,开发者往往需要面对卡顿、崩溃、能耗异常、日志混乱等一系列问题。这些问题表面上看似偶发,但背后往往隐藏着系统资源调度不当…...
HubSpot推出与ChatGPT的深度集成引发兴奋与担忧
上周三,HubSpot宣布已构建与ChatGPT的深度集成,这一消息在HubSpot用户和营销技术观察者中引发了极大的兴奋,但同时也存在一些关于数据安全的担忧。 许多网络声音声称,这对SaaS应用程序和人工智能而言是一场范式转变。 但向任何技…...
基于鸿蒙(HarmonyOS5)的打车小程序
1. 开发环境准备 安装DevEco Studio (鸿蒙官方IDE)配置HarmonyOS SDK申请开发者账号和必要的API密钥 2. 项目结构设计 ├── entry │ ├── src │ │ ├── main │ │ │ ├── ets │ │ │ │ ├── pages │ │ │ │ │ ├── H…...
