目录

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数据相关推荐

  1. 风控建模十二:数据淘金——如何从APP数据中挖掘出有效变量

    风控建模十二:数据淘金--如何从APP数据中挖掘出有效变量 1.常识知识 2.个例分析 3.分布排查 智能手机的诞生改变了人类的生活方式,智能手机所承载的功能日臻完善.强大,人们在衣.食.住.行.工作 ...

  2. 吴恩达《机器学习》学习笔记十二——机器学习系统

    吴恩达<机器学习>学习笔记十二--机器学习系统 一.设计机器学习系统的思想 1.快速实现+绘制学习曲线--寻找重点优化的方向 2.误差分析 3.数值估计 二.偏斜类问题(类别不均衡) 三. ...

  3. 《C++游戏开发》笔记十二 战争迷雾:初步实现

    本系列文章由七十一雾央编写,转载请注明出处. http://blog.csdn.net/u011371356/article/details/9475979 作者:七十一雾央 新浪微博:http:// ...

  4. Python语言入门这一篇就够了-学习笔记(十二万字)

    Python语言入门这一篇就够了-学习笔记(十二万字) 友情提示:先关注收藏,再查看,12万字保姆级 Python语言从入门到精通教程. 文章目录 Python语言入门这一篇就够了-学习笔记(十二万字 ...

  5. Polyworks脚本开发学习笔记(十二)-输出和读取文本文件

    Polyworks脚本开发学习笔记(十二)-输出和读取文本文件 Polyworks作为一个测量工具,将测量的数据方便的导出到文本文件则是一项必须的功能.在DATA_FILE这个命令下提供了很多子命令用 ...

  6. Polyworks脚本开发学习笔记(十九)-将数据对象与参考对象对齐的方法

    Polyworks脚本开发学习笔记(十九)-将数据对象与参考对象对齐的方法 把开发手册理了一遍,发现还有几个点没有记录下来,其中一个就是使用点对的粗对齐和使用参考目标的精确对齐.为了把这个学习笔记凑够 ...

  7. OpenCV学习笔记(十二)——图像分割与提取

    在图像处理的过程中,经常需要从图像中将前景对象作为目标图像分割或者提取出来.例如,在视频监控中,观测到的是固定背景下的视频内容,而我们对背景本身并无兴趣,感兴趣的是背景中出现的车辆.行人或者其他对象. ...

  8. python图像处理笔记-十二-图像聚类

    python图像处理笔记-十二-图像聚类 学习内容 这一章主要在学习的是聚类算法以及其在图像算法中的应用,主要学习的聚类方法有: KMeans 层次聚类 谱聚类 并将使用他们对字母数据及进行聚类处理, ...

  9. 软考-软件设计师 笔记十二(数据流图)

    本栏博客目录 软考-软件设计师 笔记一(计算机组成与体系结构) 软考-软件设计师 笔记二(操作系统基本原理) 软考-软件设计师 笔记三(数据库系统) 软考-软件设计师 笔记四(计算机网络) 软考-软件 ...

最新文章

  1. 57 Node.js异步编程
  2. map/reduce的概念
  3. 修改el-popover和el-select样式
  4. python模块下载连接清华镜像的具体步骤_anaconda | 镜像站使用帮助 | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror...
  5. java node子节点_使用Java的XPath循环遍历节点并提取特定的子节点值
  6. JDK、JRE、JVM的区别与联系
  7. Scrapy的log日志功能
  8. (转载)图文推荐给开发人员非常实用的站点
  9. 【2019徐州网络赛:M】Longest subsequence(思维+构造)
  10. android仿黑客帝国字符雨
  11. 购书网站前端实现(HTML+CSS+JavaScript)
  12. python字典中get()函数的用法总结
  13. 谁要的手机用KRKR2 Onscripter 资源打包工具
  14. ArcGIS中消除两幅卫星影像之间色带问题
  15. openwrt 做二级路由 同网段无线桥接教程 relayd
  16. python pandas str列内置方法
  17. 为了让你的硬盘资源能完好地传给你的曾曾曾孙,科学家想到了这些办法……...
  18. ArrayList和LinkedList的区别以及优缺点
  19. 危机感,你时刻应该有
  20. ai电销机器人系统搭建开发-通话模块

热门文章

  1. 手机游戏获取不了服务器信息,手机获取游戏服务器
  2. 华为手机设置页面黑色_华为手机拨号功能怎么设置 华为手机拨号功能设置方法【介绍】...
  3. 计算机视觉——harris角点检测之harris角点响应函数R
  4. GOlang后端面经(2022.03.11,周五,天气晴)
  5. python反爬虫机制_盘点一些网站的反爬虫机制
  6. Agile PLM文件服务器报错解决
  7. Android开发板之串口开发
  8. java 正则 连续数字_Java - 正则表达式匹配字符串中的连续数字或字符
  9. 金蝶k3 cloud 7.x 学习 授权
  10. 用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题)