python+Appium自动化:读取Yaml配置文件
Yaml简介
Yaml:"Yet Another Markup Language"(是一种标记语言),但为了强调这种语言以数据做为中心,而不是以标记语言为重点,而用反向缩略语重命名。
appium中,yaml 是专门用来写配置文件的语言,语言很简洁、强大,格式有点类似于json,感觉要比json强大点。
语法特点:
1.大小写敏感;
2.使用缩进表示层级关系;
3.缩进时不允许使用Tab键,只允许使用空格;
4.缩进的空格数目不重要,只要相同层级的元素左侧对齐即可。
yaml下载
https://pyyaml.org/
也可以在cmd中下载
pip install pyyaml
Yaml数据类型
yaml支持的数据结构有三种:
1.对象:键值对的集合,又称为映射(mapping)/ 哈希(hashes) / 字典(dictionary)
2.数组:一组按次序排列的值,又称为序列(sequence) / 列表(list)
3.纯量(scalars):单个的、不可再分的值。字符串、布尔值、整数、浮点数、Null、时间、日期
创建一个例子:
egyaml.yaml
name: Tom age: 28 spouse: name: May age: 26 children: - name: kate age: 5 - name: jeck age: 3
数据读取:
yamlload.py
import yaml file = open('egyaml',encoding="utf-8") data=yaml.load(file,yaml.FullLoader) print(data) #输出tom的名字、年龄 print(data['name']) print(data['age']) #输出妻子的名字、年龄 print(data['spouse']) print(data['spouse']['name']) print(data['spouse']['age']) #输出孩子们的名字、年龄 print(data['children']) print(data['children'][0]['name']) print(data['children'][0]['age']) print(data['children'][1]['name']) print(data['children'][1]['age'])
输出结果:
{'age': 28, 'name': 'Tom', 'children': [{'name': 'kate', 'age': 5}, {'name': 'jeck', 'age': 3}], 'spouse': {'name': 'May', 'age': 26}} Tom 28 {'name': 'May', 'age': 26} May 26 [{'name': 'kate', 'age': 5}, {'name': 'jeck', 'age': 3}] kate 5 jeck 3
补充:
file = open('egyaml',encoding="utf-8")
data=yaml.load(file)
运行后总出现
YAMLLoadWarning: calling yaml.load() without Loader=... is deprecated, as the default Loader is unsafe. Please read https://msg.pyyaml.org/load for full details.
data=yaml.load(file)
尽管是没有什么影响,但是看着别扭,YAML 5.1版本后弃用了yaml.load(file)这个用法,因为觉得很不安全,5.1版本之后就修改了需要指定Loader
data=yaml.load(file,yaml.FullLoader)这样就正常了
数据转化为yaml格式,用yaml.dump()
# -*- coding: utf-8 -*-# import yaml a1=[1,321.33,1,'hello',[1,2,3,'python'],] a2={'123A':'class','No1':1,"money":13254.55,"tuple":(123),'teacher':[123,46546.225,'python']} print(type(a1)) print(type(a2)) print(a1) print(a2) #转化为yaml类型 print(yaml.dump(a1)) print(yaml.dump(a2))
执行结果:
<class 'list'> <class 'dict'> [1, 321.33, 1, 'hello', [1, 2, 3, 'python']] {'money': 13254.55, 'tuple': 123, 'No1': 1, '123A': 'class', 'teacher': [123, 46546.225, 'python']} - 1 - 321.33 - 1 - hello - - 1 - 2 - 3 - python 123A: class No1: 1 money: 13254.55 teacher: - 123 - 46546.225 - python tuple: 123
转载请附上原文链接。