App自动化测试笔记(十二):Yaml数据
目录
Yaml数据格式
应用场景
字典和列表相互嵌套
规律
字典嵌套字典
字典嵌套列表
列表嵌套字典
列表嵌套列表
yaml其他数据类型
Yaml读写
读取yaml
写入yaml
Yaml数据驱动应用
项目需求
analyze_file.py代码
项目整体代码
-base--base_action.py
--base_analyze.py
--base_driver.py
-data--test_add_contact.yaml
-page--page.py
--page_contact_list.py
--page_new_contact.py
--page_saved_contact_data.py
-scripts--test_add_contact.py
Yaml数据格式
应用场景
概念和语法规则
Yaml 是一种所有编程语言可用的友好的数据序列化标准。语法和其他高阶语言类似,并且可以简单表达字典、列表和其他基本数据类型的形态。
语法规则如下:
1. 大小写敏感。
2. 使用缩进表示层级关系。
3. 缩进时不允许使用Tab键,只允许使用空格。
4. 缩进的空格数目不重要,只要相同层级的元素左侧对齐即可。
规律:
如果是字典,直接写key
{"name":"xiaoming","age":"18"}
name:"xiaoming"
age:"18"
如果是列表,直接写“-”
[1,2,3]
- "1"
- "2"
- "3"
字典对应的value,如果不是字典或者列表,直接写
列表中的元素,如果不是字典或列表,直接写
字典和列表相互嵌套
规律
⚪是一个字典还是一个列表
如果是字典,直接写key,冒号空格
如果是列表,直接写“-”,空格
⚪字典对应的value
如果是字典或列表,回车缩进,回到第一个问题
如果不是字典或列表,直接写
⚪列表中的元素,如果不是字典或列表,直接写
字典嵌套字典
{people1:{"name":"xiaoming","age":"18"},people2:{"name":"xiaohong","age":"20"}}people1:name: "xiaoming"age: "18"
people2: name: "xiaohong"age: "20"
字典嵌套列表
{people1:["1","2","3"],people2:["4","5","6"]}
people1:- "1"- "2"- "3"
people2:- "4"- "5"- "6"
列表嵌套字典
[{"name":"xiaoming","age":"18"},{"name":"xiaohong","age":"20"}]- name: "xiaoming"age: "18"
- name: "xiaohong"age: "20"
列表嵌套列表
[["1","2","3"],["4","5","6"]]
- - "1"- "2"- "3"
- - "4"- "5"- "6"
强化练习:
#使用 Yaml 编写:
#["1", "2", {"name": ["xiaoming", "xiaohong"], "age": "18"}, [{"name": "xiaoqiang", "age": "28"}, "3", "4"], "5",
#["7", "8"]]
yaml编写:
- "1"
- "2"
-name:- "xiaoming"- "xiaohong"age: "18"
--name: "xiaoqiang"age: "28"- "3"- "4"
- "5"
-- "7"- "8"
yaml其他数据类型
⚪整数
⚪布尔
⚪浮点
⚪空值
⚪时间
⚪年-月-日 时:分:秒.毫秒
⚪字符串
Yaml读写
读取yaml
步骤:
1、导入yaml模块
2、使用with open形式,获取f对象
3、使用yaml模块中的load方法
代码:
import yamlwith open("./data.yaml", "r", encoding="utf-8") as f:data=yaml.load(f,Loader=yaml.FullLoader)print(data)
注意点:
1、由于Yaml 5.1版本后弃用了 yaml.load(file) 这个用法。Yaml 5.1版本之后就修改了需要指定Loader,通过默认加载器(FullLoader)禁止执行任意函数,使得此load函数的安全得到加强。
有解决三种方案:
data=yaml.load(file,Loader=yaml.FullLoader)
data=yaml.safe_load(file)
data=yaml.load(file, Loader=yaml.CLoader)
2、windows在读的时候需要在with open 设置参数encode = "utf-8"
写入yaml
步骤:
1、导入yaml模块
2、准备要写入的数据
3、使用with open形式,确定要写入的文件位置
4、使用yaml模块中的dump方法,将数据和文件流传入即可
代码:
import yaml
data = {'search_data': {'search_test_002': {'expect': {'value': 'hello'}, 'value': 'hello'},
'search_test_001': {'expect': [4, 5, 6], 'value': 456}}}
with open("./hello.yaml","w") as f:yaml.dump(data,f)执行结果:
hello.yaml文件内容:
search_data:search_test_001:expect:- 4- 5- 6value: 456search_test_002:expect:value: hellovalue: hello
注意点:
我们会发现在写入的时候,如果将内容换成中文,那么中文的显示是有问题的。此时我们应该设置一下写入的编码。
mac和windows在写的时候需要在dump()方法中加入encode='utf-8',allow_unicode = True
yaml.dump(data,f,encode='utf-8',allow_unicode = True)
Yaml数据驱动应用
项目需求
使用pytest+po封装+yaml数据驱动
♥yaml数据和测试用例对应的yaml文件
⚪有多少个模块,就应该有多少个对应的yaml文件
App自动化测试笔记(十二):Yaml数据相关推荐
- 风控建模十二:数据淘金——如何从APP数据中挖掘出有效变量
风控建模十二:数据淘金--如何从APP数据中挖掘出有效变量 1.常识知识 2.个例分析 3.分布排查 智能手机的诞生改变了人类的生活方式,智能手机所承载的功能日臻完善.强大,人们在衣.食.住.行.工作 ...
- 吴恩达《机器学习》学习笔记十二——机器学习系统
吴恩达<机器学习>学习笔记十二--机器学习系统 一.设计机器学习系统的思想 1.快速实现+绘制学习曲线--寻找重点优化的方向 2.误差分析 3.数值估计 二.偏斜类问题(类别不均衡) 三. ...
- 《C++游戏开发》笔记十二 战争迷雾:初步实现
本系列文章由七十一雾央编写,转载请注明出处. http://blog.csdn.net/u011371356/article/details/9475979 作者:七十一雾央 新浪微博:http:// ...
- Python语言入门这一篇就够了-学习笔记(十二万字)
Python语言入门这一篇就够了-学习笔记(十二万字) 友情提示:先关注收藏,再查看,12万字保姆级 Python语言从入门到精通教程. 文章目录 Python语言入门这一篇就够了-学习笔记(十二万字 ...
- Polyworks脚本开发学习笔记(十二)-输出和读取文本文件
Polyworks脚本开发学习笔记(十二)-输出和读取文本文件 Polyworks作为一个测量工具,将测量的数据方便的导出到文本文件则是一项必须的功能.在DATA_FILE这个命令下提供了很多子命令用 ...
- Polyworks脚本开发学习笔记(十九)-将数据对象与参考对象对齐的方法
Polyworks脚本开发学习笔记(十九)-将数据对象与参考对象对齐的方法 把开发手册理了一遍,发现还有几个点没有记录下来,其中一个就是使用点对的粗对齐和使用参考目标的精确对齐.为了把这个学习笔记凑够 ...
- OpenCV学习笔记(十二)——图像分割与提取
在图像处理的过程中,经常需要从图像中将前景对象作为目标图像分割或者提取出来.例如,在视频监控中,观测到的是固定背景下的视频内容,而我们对背景本身并无兴趣,感兴趣的是背景中出现的车辆.行人或者其他对象. ...
- python图像处理笔记-十二-图像聚类
python图像处理笔记-十二-图像聚类 学习内容 这一章主要在学习的是聚类算法以及其在图像算法中的应用,主要学习的聚类方法有: KMeans 层次聚类 谱聚类 并将使用他们对字母数据及进行聚类处理, ...
- 软考-软件设计师 笔记十二(数据流图)
本栏博客目录 软考-软件设计师 笔记一(计算机组成与体系结构) 软考-软件设计师 笔记二(操作系统基本原理) 软考-软件设计师 笔记三(数据库系统) 软考-软件设计师 笔记四(计算机网络) 软考-软件 ...
最新文章
- 57 Node.js异步编程
- map/reduce的概念
- 修改el-popover和el-select样式
- python模块下载连接清华镜像的具体步骤_anaconda | 镜像站使用帮助 | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror...
- java node子节点_使用Java的XPath循环遍历节点并提取特定的子节点值
- JDK、JRE、JVM的区别与联系
- Scrapy的log日志功能
- (转载)图文推荐给开发人员非常实用的站点
- 【2019徐州网络赛:M】Longest subsequence(思维+构造)
- android仿黑客帝国字符雨
- 购书网站前端实现(HTML+CSS+JavaScript)
- python字典中get()函数的用法总结
- 谁要的手机用KRKR2 Onscripter 资源打包工具
- ArcGIS中消除两幅卫星影像之间色带问题
- openwrt 做二级路由 同网段无线桥接教程 relayd
- python pandas str列内置方法
- 为了让你的硬盘资源能完好地传给你的曾曾曾孙,科学家想到了这些办法……...
- ArrayList和LinkedList的区别以及优缺点
- 危机感,你时刻应该有
- ai电销机器人系统搭建开发-通话模块
热门文章
- 手机游戏获取不了服务器信息,手机获取游戏服务器
- 华为手机设置页面黑色_华为手机拨号功能怎么设置 华为手机拨号功能设置方法【介绍】...
- 计算机视觉——harris角点检测之harris角点响应函数R
- GOlang后端面经(2022.03.11,周五,天气晴)
- python反爬虫机制_盘点一些网站的反爬虫机制
- Agile PLM文件服务器报错解决
- Android开发板之串口开发
- java 正则 连续数字_Java - 正则表达式匹配字符串中的连续数字或字符
- 金蝶k3 cloud 7.x 学习 授权
- 用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题)