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 ...
随机推荐
- C# 利用Xsd验证xml
最近做项目时,用到了xml的序列化与反序列化, 发现最好用xsd来验证xml, 因为反序列化xml不校验xsd. 方法:xmlData变量为xml字符串 MemoryStream ms = new M ...
- LAMP 2.0Apache日志切割
每次访问网站就会产生若干条日志,当然前提是已经配置了日志. 配置日志的文件在 vim /usr/local/apache2/conf/extra/httpd-vhosts.conf 把注释掉的这两行打 ...
- javascript之系统对话框
浏览器通过alert(),confirm()和prompt()方法调用系统对话框,向用户显示信息. alert()接受一个字符串并显示给用户,结果是显示一个对话框,其中包括指定的文本和一个OK(“确定 ...
- Mac系统的launchd、守护进程daemon(2013笔记整理)
1. launchd Mac系统下通用的进程管理器,是Mac系统下非常重要的一个进程,一般来说该进程不允许直接以命令行的形式调用.只能通过其控制管理界面,launchctl来进行控制. launchd ...
- foregroundservice的用处和用法
由于android的系统资源回收机制,当内存不足的时候,会自动关闭一些后台服务,如果这时候我们的服务正在播放歌曲,由于被关闭,歌曲会被中断,这样会造成很差的用户体验. 这时候我们可以通过在servic ...
- #410(div2)B. Mike and strings
time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standa ...
- 孙鑫VC学习系列教程
教程简介 1.循序渐进 从Win32SDK编程开始讲解,帮助大家理解掌握Windows编程的核心 -- 消息循环机制. 2.通俗易懂 编程语言枯燥难懂,然而通过孙鑫老师形象化的讲解,Windows和M ...
- jeecms v8 网站访问量配置
<script src="${resSys}/jquery.js" type="text/javascript"></script> & ...
- 【mysql-索引+存储过程+函数+触发器-更新。。。】
BaseOn ===>MySQL5.6 一:索引 1:创建索引: create index nameIndex on seckill(name) ; 2:查看索引: show index fro ...
- SuperSocket框架中BinaryRequestInfo协议的使用
一.开发环境 1.Windows 10 企业版 64位 2.Microsoft Visual Studio 2017 企业版 二.项目开始 1.新建控制台程序,项目名称“BinarySuperSock ...