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 ...
随机推荐
- libvirt, libvirt-python, libvirtd 关系浅析
libvirt 官方解释: http://libvirt.org/ 见分隔线以下. 我的理解:libvirt 作为一个中间层,封装了对下层虚拟化 hypervisor 的操作方法.也就是说,无论你是 ...
- JavaScript原型模式(prototype)
1.原型是一个对象,其他对象可以通过它实现属性的继承所有对象在默认的情况下都有一个原型,因为原型的本身也是对象,所以一个类的真正原型是被类的内部[prototype]属性所指出.每个函数都有一个属性叫 ...
- Swift3.0 基础学习梳理笔记(一)
本篇是我在学完一遍基础语法知识的时候,第一遍复习,我一遍梳理一遍记录的笔记.同时分享给像我一样在学习swift 的猿友们. 本篇可能过于冗长.所以所有的参考资料都分模块的写在palyground 里, ...
- jquery easyui 推荐博客 (MVC+EF+EasyUI+Bootstrap)
构建ASP.NET MVC5+EF6+EasyUI 1.4.3+Unity4.x注入的后台管理系统(52)-美化EasyUI皮肤和图标 系列目录 我很久以前就想更新系统的皮肤功能,Easyui 自 ...
- shell入门-tr替换字符和split切割大文件
命令:tr 说明:替换字符 格式tr ‘原字符’ ‘新字符’ 可以是范围字符,指定字符 命令:split 选项:-b 50m 1.txt 根据大小分割 单位是b不用单位,单位是兆加m -l 100 ...
- js链表操作
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- (转载)Windows无法安装到GPT分区形式磁盘解决办法
之前使用的是windows7 + ubuntu18.04双系统,硬盘分区采用的是GPT格式.重装windows系统时,提示“windows无法安装到这个磁盘.选中的磁盘采用GPT分区形式”,导致安装失 ...
- 每次选中数组中的N条数据, 如果让每条数据被选中的次数做到平均??
经常有这样的需求, 有一组数据, 每次展示其中的1条或N条,希望每条数据展示量可以做到平均. 一开始想依次展示每条数据并做记录,整组数据全展示一遍之后清除记录, 然后一直循环下去. 实现的过程中又觉得 ...
- 微信小程序iPhone X空白兼容
开局一张图…… 看看这空白的地方多丑 ~ 接下来就是见证奇迹的时刻(上代码) //app.js App({ onLaunch: function (ops) { if (ops.scene == 10 ...
- 使用Log4j2,打包后提示ERROR StatusLogger Log4j2 could not find a logging implementation.
从Log4j切换到Log4j2,没有打包之前日志输出正常,但是打包后总是提示下面内容: 错误一: ERROR StatusLogger Log4j2 could not find a logging ...