前戏

YAML 语言的设计目标,就是方便人类读写。它实质上是一种通用的数据串行化格式。

它的基本语法规则如下。

  • YAML大小写敏感;
  • 使用缩进代表层级关系;
  • 缩进只能使用空格,不能使用TAB,不要求空格个数,只需要相同层级左对齐(一般2个或4个空格)

# 表示注释,从这个字符一直到行尾,都会被解析器忽略。

YAML 支持的数据结构有三种。

对象:键值对的集合,又称为映射(mapping)/ 哈希(hashes) / 字典(dictionary)

数组:一组按次序排列的值,又称为序列(sequence) / 列表(list)

纯量(scalars):单个的、不可再分的值

数组

一组连词线开头的行,构成一个数组。

- Cat
- Dog
- Goldfish

转为 python 如下。
[ 'Cat', 'Dog', 'Goldfish' ]

对象

对象的一组键值对,使用冒号结构表示。
animal: pets

冒号后面一定要有空格

转为 JavaScript 如下。

{ animal: 'pets' }

python读取yaml

安装PyYAML库

pip install PyYAML

数据场景:

Tom Smith37岁,他有一个妻子Jane Smith,25岁,另外他有两个孩子,一个叫Jimmy Smith,15岁。另外一个叫Jenny Smith,12岁

family.yaml

name: Tom Smith
age: 37
spouse:
name: Jane Smith
age: 25
childen:
- name: Jimmy Smith
age: 15
- name: Jenny Smith
age: 12

python文件读取

import yaml

file = open('family.yaml', "r")
data = yaml.load(file, Loader=yaml.FullLoader)
print(data)
# {'name': 'Tom Smith', 'age': 37, 'spouse': {'name': 'Jane Smith', 'age': 25}, 'childen': [{'name': 'Jimmy Smith', 'age': 15}, {'name': 'Jenny Smith', 'age': 12}]} print(data['name']) # Tom Smith
print(data['age']) #
print(data['spouse']['name']) # Jane Smith
print(data['spouse']['age']) #
print(data['childen']) # [{'name': 'Jimmy Smith', 'age': 15}, {'name': 'Jenny Smith', 'age': 12}]
print(data['childen'][0]['name']) # Jimmy Smith
print(data['childen'][0]['age']) #
print(data['childen'][1]['name']) # Jenny Smith
print(data['childen'][1]['age']) #

python数据类型转为yaml格式

上面我们使用了yaml.load从yaml里读取,转为python的类型,我们可以使用dump把python类型的转为yaml类型

import yaml

lis = ['name', 'age', 'job']
dic = {'IT':'test', 'dev':'ui'} print(yaml.dump(lis))
print(yaml.dump(dic))

结果:

- name
- age
- job IT: test
dev: ui

把python的数据类型写入yaml文件

import yaml

lis = {'name': 'Tom Smith', 'age': 37, 'spouse': {'name': 'Jane Smith', 'age': 25},
'childen': [{'name': 'Jimmy Smith', 'age': 15}, {'name': 'Jenny Smith', 'age': 12}]} dic = {'IT': 'test', 'dev': 'ui'}
with open('family.yaml', 'w') as f:
f.write(yaml.dump(lis))
f.write(yaml.dump(dic))

结果:

将Capability封装成yaml配置文件

desired_caps.yaml

platformName: Android  # 注意要有空格
platforVersion: 9.1.1
deviceName: 127.0.0.1:62001
app: F:\App\csca3.1.0.apk
appPackage: com.csca
appActivity: com.csca.ui.activity.SplashActivity
noReset: False
ip: 127.0.0.1
port: 4723

读取配置文件yaml里的内容

import yaml
from appium import webdriver file = open('desired_caps.yaml', 'r')
data = yaml.load(file, Loader=yaml.FullLoader) desired_caps = {}
desired_caps['platformName'] = data['platformName']
desired_caps['platforVersion'] = data['platforVersion']
desired_caps['deviceName'] = data['deviceName']
desired_caps['app'] = data['app']
desired_caps['appPackage'] = data['appPackage']
desired_caps['appActivity'] = data['appActivity']
desired_caps['noReset'] = data['noReset'] driver = webdriver.Remote('http://' + str(data['ip']) + ':' + str(data['port']) + '/wd/hub', desired_caps)

appium--使用PyYAML封装Capability的更多相关文章

  1. Appium的Java封装

    文章出处 http://blog.csdn.net/niubitianping/article/details/52612211 一.为什么需要封装? 封装的本意就是为了方便.简洁. 二.Androi ...

  2. Appium脚本(3):sendkey(封装capability)

    输入中文注意添加这个配置,否正中文输入不了desired_caps['unicodeKeyboard'] = "True"desired_caps['resetKeyboard'] ...

  3. appium自动化测试框架——封装获取设备信息类

    在上一节中,我们已经解决了如何在python中执行cmd,并获取执行结果.下面就小小实战一下,获取设备信息. 一.思路 1.windows上获取设备信息的方法 输入dos命令“adb devices” ...

  4. Python +appium 封装desired_caps模块

    使用python+appium做android的自动化测试时,首先需要启动appium服务,然后连接上手机,配置如下: desired_caps = {"platformName" ...

  5. Appium自动化测试框架

    1.在utils包中创建一个AppiumUtil类,这个类是对appium api进行封装的. 代码如下: package utils; import java.net.MalformedURLExc ...

  6. 『与善仁』Appium基础 — 10、Appium基本原理

    目录 1.Appium自动化测试架构 2.Appium架构图 3.Session说明 4.Desired Capabilities说明 5.Appium Server说明 6.Appium Clien ...

  7. 手机自动化测试:appium源码分析之bootstrap九

    手机自动化测试:appium源码分析之bootstrap九   poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.如果对课程感兴趣, ...

  8. Appium环境搭建-精简版

    Appium自动化环境准备 安装配置JDK 下载Android SDK并配置环境变量 安装模拟器或连接真机 安装appium desktop 安装python和pycharm (开发语言和开发工具) ...

  9. Appium学习笔记4_元素定位方法

    Appium之元素定位,如果对Android上如何使用工具获取页面元素有问题的,请转战到这:http://www.cnblogs.com/taoSir/p/4816382.html. 下面主要是针对自 ...

随机推荐

  1. 【AtCoder】AtCoder Grand Contest 039 解题报告

    点此进入比赛 \(A\):Connection and Disconnection(点此看题面) 大致题意: 给你一个字符串,将它重复\(k\)次.进行尽量少的操作,每次修改一个位置上的字符,使得不存 ...

  2. RestTemplate调用接口(附有账号密码)

    private JSONObject Post(String url, String payload, String username, String password) { RestTemplate ...

  3. oracle多表关联update

    日常的开发中一般都是写的单表update语句,很少写多表关联的update. 不同于SQL Server,在Oracle中,update的多表连接更新和select的多表连接查询在使用的方法上存在较大 ...

  4. 【HDU6037】Expectation Division(动态规划,搜索)

    [HDU6037]Expectation Division(动态规划,搜索) 题面 Vjudge 你有一个数\(n\),\(n\le 10^{24}\),为了方便会告诉你\(n\)分解之后有\(m\) ...

  5. Netty — 心跳检测和断线重连

    一.前言 由于在通信层的网络连接的不可靠性,比如:网络闪断,网络抖动等,经常会出现连接断开.这样对于使用长连接的应用而言,当突然高流量冲击势必会造成进行网络连接,从而产生网络堵塞,应用响应速度下降,延 ...

  6. Newtonsoft.Json 指定某个属性使用特定的时间格式

    Newtonsoft.Json 指定某个属性使用特定的时间格式 Intro Newtonsoft.Json 是 .NET 下最受欢迎 JSON 操作库,原为 JSON.Net 后改名为 Newtons ...

  7. 数据库之MySQL与Python交互

    准备数据 创建数据表 -- 创建 "京东" 数据库 create database jing_dong charset=utf8; -- 使用 "京东" 数据库 ...

  8. git遇到的错误和解决方法(长期更新)

    1:场景:将两个git合并成一个git url,由于项目超过100M,所以出现错误,以下是解决方案:

  9. python 安装impala包

    一路安装就可以 .pip install six .pip install bit_array .pip install thriftpy .pip install thrift_sasl .pip ...

  10. 测试工程师技术tree(“自言自语”)

    理论部分 1.测试分为哪几个阶段 2.测试的流程是什么 3.如何做好测试计划 4.常见的测试用例设计方法有哪些 5.一条bug记录包含哪些内容 5.如何分层自动化测试 6.如何保证脚本的有效性 7.如 ...