python3+Appium自动化08-数据配置yaml
yaml简介
yaml是一种简洁的非标记语言。yaml以数据为中心,使用空白,缩进,分行组织数据,从而使得表示更加简洁易读
由于实现简单,解析成本低,yaml特别适合在脚本语言中使用。现有的语言实现:Ruby,Java,Perl,Python,PHP,JavaScript
yaml是专门用来写配置文件的语言,非常简洁强大,远比JSON格式方便。同一段数据JSON和yaml表示分别如下:
Json
{ name: 'Tom Smith',age: 37,spouse: { name: 'Jane Smith', age: 25 },children: [ { name: 'Jimmy Smith', age: 15 },{ name: 'Jenny Smith', age: 12 } ] }
yaml
name: Tom Smith
age: 37
spouse:
name: Jane Smith
age: 25
children:
- name: Jimmy Smith
age: 15
- name: Jenny Smith
age: 12
语法特点
- 大小写敏感
- 使用缩进表示层级关系
- 缩进时不允许使用Tab键,只允许使用空格
- 缩进的空格数目不重要,只要相同层级的元素左侧对齐即可
yaml下载安装
使用pip安装pyyaml模块

yaml数据类型详解
支持数据类型
- 纯量:单个的,不可再分的值
- 数组:一组按次序排列的值,又称为序列(sequence)/列表(list)
- 对象:键值对的集合,又称为映射(mapping)/哈希(hashes)/字典(dictionary)
纯量
数据最小的单位,不可以再分割。类似于Python的单个变量
list数组
于Python的list数组结构类似,数组元素使用“-”开头,也可以根据缩进进行数组嵌套
-Jack
-Honey
-Tom
#也可以写成一行
[Jack,Honey,Tom]
对应到python的list写法如下:
['Jack','Honey','Tom']
对象
对象的一组键值对,使用冒号结构表示。类似python中的字典数据结构
platformName: Android
deviceName: 192.168.175.101:5555
#yaml也允许将所有键值对写成一个行内对象
{platformName: Android,deviceName: 192.168.175.101:5555}
注意:冒号后面一定要有空格!对应到python字典的写法如下:
{'platformName': 'Android','deviceName': '192.168.175.101:5555'}
数据嵌套
yaml数据嵌套表示可以将上面的各类数据根据实际场景进行组合嵌套
场景
Tom Smith 37岁,他有一个妻子叫 Jane Smith,25岁。 另外他有2个孩子,一个叫Jimmy Smith,15岁;另外一个叫Jenny Smith ,12岁。
#yaml表示
name: Tom Smith
age: 37
spouse:
name: Jane Smith
age: 25
children:
- name: Jimmy Smith
age: 15
- name: Jenny Smith
age: 12 #转为Python写法
{'name':'Tom Smith','age':37,'spouse':{'name':'Jane Smith','age':25},'childern':[{'name':'Jimmy Smith','age':15},{'name':'Jenny Smith','age':12}]}
yaml数据操作
数据读取
load(stream, Loader=Loader) 解析文件流中的第一个YAML文档并生成相应的Python对象。
数据转化
dump()可以将Python对象序列化成YAML流。如果stream为None,则返回生成的字符串
#coding=utf-8
import yaml
file=open('familyInfo.yaml','r')
#解析文件流中的第一个ymal文档并生成相应的Python对象
data=yaml.load(file)
print(data)
print(data['name'])
print(data['age'])
print(data['spouse'])
print(data['spouse']['name'])
print(data['children'])
print(data['children'][0]['name'])
#数据修改,只是变量类型的数据变更,不会真正修改到yaml配置表中的数据
data['name']='honey'
print(data['name'])
#dump()可以将python对象转换为yaml流。如果stream为None,则返回生成的字符串
data=yaml.dump(data)
print(data)
python3+Appium自动化08-数据配置yaml的更多相关文章
- Appium+python自动化(三十)- 实现代码与数据分离 - 数据配置-yaml(超详解)
简介 本篇文章主要介绍了python中yaml配置文件模块的使用让其完成数据和代码的分离,宏哥觉得挺不错的,于是就义无反顾地分享给大家,也给大家做个参考.一起跟随宏哥过来看看吧. 思考问题 前面我们配 ...
- python3+Appium自动化01-Appium环境搭建
环境依赖 Node.js Appium Appium-desktop Appium-doctor Appium-Python-Client Python JDK Android SDK 安装Node. ...
- python3+Appium自动化09-Capability配置数据分离实践
代码实现 参数配置表:desired_caps.yaml platformName: Android deviceName: 192.168.175.101:5555 platformVersion: ...
- python3+Appium自动化02-Capability配置
基本参数 参数 描述 实例 automationName 自动化测试引擎 Appium或 Selendroid platformName 手机操作系统 iOS, Android, 或 FirefoxO ...
- python3+Appium自动化12-H5元素定位环境搭建
前言 在混合开发的App中,经常会有内嵌的H5页面.那么这些H5页面元素该如何进行定位操作呢? 针对这种场景直接使用前面所讲的方法来进行定位是行不通的,因为前面的都是基于Andriod原生控件进行元素 ...
- python3+Appium自动化10-日志收集
日志概述 日志作用 日志是定位问题的重要手段 日志级别 级别 何时使用 DEBUG 调试信息,也是最详细的日志信息 INFO 证明事情按预期工作 WARNING 表明发生了一些意外,或者不就的将来(如 ...
- python+Appium自动化:Capability配置简介
Capability配置简介 desired capability的功能是配置Appium会话. Desired Capabilities是一组设置的键值对的集合,其中键对应设置的名称,而值对应设置的 ...
- python+Appium自动化:logging配置代码分离
配置文件信息log.conf: [loggers]keys=root,simpleExample [logger_root]level=DEBUGhandlers=consoleHandler,fil ...
- python3+Appium自动化13-H5元素定位实践案例
测试场景 启动钉钉app进入工作H5页面,点击考勤签到 查看webview上元素 1.电脑上打开chrome浏览器输入:chrome://inspect/#devices 2.Discover USB ...
随机推荐
- HDU1114(完全背包装满问题)
Piggy-Bank Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total ...
- 1 slow requests are blocked > 32 sec解决方法
[root@node1 ~]# ceph -s cluster: id: b8b4aa68-d825-43e9-a60a-781c92fec20e health: HEALTH_WARN Reduce ...
- js检测对象属性
In:(检测自身及原型属性) var o={x:1}; "x" in o; //true,自有属性存在 "y" in o; //false "toSt ...
- Python-Redis的String操作
Ubuntu安装Redis sch01ar@ubuntu:~$ sudo apt install redis-server sch01ar@ubuntu:~$ redis-server sch01ar ...
- Windows 2008 远程登陆时提示"要登录到此远程计算机,您必须被授予允许通过终端登录登录的权限"
ECS Win2008 远程时提示"要登录到此远程计算机,您必须被授予允许通过终端登录登录的权限"的解决方法 问题描述 ECS Windows 2008 远程登陆时提示&quo ...
- mysql 简单的sql优化示例[不定时更新]
对于慢sql的分析步骤: 1) desc|explain sql 查看执行计划, 对于type很慢的, 分析是否建立了对应字段的索引 2) 进行排除法, 把子查询抽离出来, 单独执行,定位慢查询是哪个 ...
- C++零碎知识点(一)
1.sizeof用法总结 ①与strlen比较 strlen 计算字符数组的字符数,以"\0"为结束判断,但不包括. sizeof 计算数据(数组.变量.类型.结构 ...
- Shape和 layer-list
shape 基本使用 <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android= ...
- Flask10 登录模块、表单框架、表单渲染、表单验证、bookie、请求之前钩子、g对象、编写装饰器
from flask import Flask from flask import request from flask import render_template from flask_wtf i ...
- JavaScript的内部对象
JavaScript的内部对象 按创建方式不同分为:使用变量声明的隐性对象,使用new创建的显性对象 隐性对象 在赋值和声明后就是一个隐性对象,隐性对象不支持prototype属性,也无法随意扩展对象 ...