咱们在作自动化的过程当中不管是接口自动化仍是UI自动化都会存在不少数据,咱们对于自动化中如何存放这些数据也是很重要一点,若是写在代码里的话,每次更换数据就有点繁琐,咱们能够经过一个文件存放这些数据,而后再咱们须要这些数据的时候直接进行调用,对于这些数据的管理有不少种如:excel,yaml,ini,conf,今天先介绍一种yaml。python
yaml(yaml不是标记语言)是一种人类可读的数据序列化语言。它一般用于配置文件,但也用于数据存储(例如调试输出)或传输(例如文档标题)。数组
yaml支持的类型:标量(例如字符串,整数和浮点数),列表和关联数组。安全
yaml的基本语法:app
一、大小写敏感;测试
二、使用缩进表示层级关系,只可使用空格;spa
三、列表中项经过“-”表示,字典中的经过“:”表示3d
四、# 表示注释,和python表示注释同样调试
yaml的优势:excel
一、yaml的可读性好;code
二、yaml和脚本语言的交互性好;
三、yaml使用实现语言的数据类型;
四、yaml有一个一致的信息模型;
五、yaml易于实现;
六、yaml能够基于流来处理;
七、yaml表达能力强,扩展性好;
安装
pip install pyyaml
这里安静使用的是pycharm,建立一个file,前面文件名称随便,后面文件后缀.yaml
咱们能够经过这个yaml能够很清楚的读出来,名字叫作安静,年龄18岁,职业是软件测试工程师,年薪为3K,会的技能有接口测试这个值1K,会的功能测试值2K
# 简介
name: AnJing
age: 18
profession:
name: 软件测试工程师
annual: 3K
skill:
- name1: 接口测试
pay: 1K
- name2: 功能测试
pay: 2K
# coding:utf-8 import yaml # 直接打开读出来 f = open(r'E:\app\Interface\name.yaml','r',encoding='utf-8') result = f.read() print(result) # 转换成字典读出来 a = yaml.load(result) print(a)
这个时候发现咱们的数据是成功的读出来了,可是确定会卧槽,为啥报错了?哪里出了问题?
咱们能够看到这个地方是禁止使用yaml.load(),由于python认为load是不安全的,发出了安全警告,那么咱们如何取消警告呢?
yaml.load(result, Loader=yaml.FullLoader)
#一、数值直接以字面量的形式表示 number: 12.30 #二、布尔值用true和false表示 isSet: true isSet1: false # 三、null用~表示 parent: ~ #四、时间采用 ISO8601 格式。 time1: 2019-11-1 21:59:43.10-05:00 ##五、日期采用复合 iso8601 格式的年、月、日表示。 date: 2019-11-1 #六、YAML 容许使用两个感叹号,强制转换数据类型。 int_to_str: !!str 123 bool_to_str: !!str true
首先建立一个yaml文件,把测试数据写好,经过字典的形式读取出来,在根据字典的格式进行提取
# 简介 name: AnJing age: 18 profession: name: 软件测试工程师 pay: 2K skill: - name1: 接口测试 pay: 1K - name2: 功能测试 pay: 2K
根据上述方法,经过字典的方式找到须要的值,而后再取出来
# coding:utf-8 import yaml # 直接打开读出来 f = open(r'E:\app\Interface\name.yaml','r',encoding='utf-8') result = f.read() # 转换成字典读出来 a = yaml.load(result,Loader=yaml.FullLoader) print(a) print('个人名字是:%s'%a['name']) print('我作的职位是:%s'%a['profession']['name']) print('我今年%s岁'%a['age']) print('个人年薪是%s'%a['profession']['pay']) print('我会的技能是{}和{}'.format(a['skill'][0]['name1'],a['skill'][1]['name2'])) ------------------------------------------------------------------------- {'name': 'AnJing', 'age': 18, 'profession': {'name': '软件测试工程师', 'pay': '2K'}, 'skill': [{'name1': '接口测试', 'pay': '1K'}, {'name2': '功能测试', 'pay': '2K'}]} 个人名字是:AnJing 我作的职位是:软件测试工程师 我今年18岁 个人年薪是2K 我会的技能是接口测试和功能测试