yaml

yaml

当一个Python用例写完了后,要更改数据时(如换一台设备),就需要去改Python代码,但改Python代码就容易将其他代码改错。所以这里就将常用数据用yaml来存储,需要更改时直接更改yaml文件就行了。


yaml介绍

YAML是”YAML Ain’t a Markup Language”(YAML不是一种标记语言)的递归缩写。在开发的这种语言时,YAML 的意思其实是:”Yet Another Markup Language”(仍是一种标记语言),但为了强调这种语言以数据做为中心,而不是以标记语言为重点,而用反向缩略语重命名。(来自维基百科)

yaml基本用法

1
2
3
platformName: Android
platforVersion: 5.1.1
...

yaml注意事项

1. 冒号(:)后要空一格

2. yaml不支持tab缩进,支持空格缩进,将同级对齐就好

1
2
3
4
5
name: Tom Smith
age: 37
spouse:
name: Jane Smith
age: 27

3. 在yaml里,用#做注释

Python读取yaml

Python读取yaml的数据时,需要导入yaml,读取时用yaml.load()读取,具体代码如下:

yaml文件
1
2
3
4
5
6
7
8
9
platformName: Android
platforVersion: 5.1.1
deviceName: 127.0.0.1:62026
app: H:\TestLearning\com.baidu.BaiduMap.apk
appPackage: com.baidu.BaiduMap
appActivity: com.baidu.baidumaps.WelcomeScreen
noReset: False
ip: 127.0.0.1
port: 4723
Python读取
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import yaml
from appium import webdriver

with open('device_info.yaml', 'r', encoding='utf-8') as file:
data = yaml.load(file)
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)