从0到1完成appium+pytest+allure框架-测试数据分离
使用appium的时候需要设置驱动器参数,那些参数如果放在代码中,如果一旦需要进行修改就会非常不方便。
所以在这里我就对数据进行了分离,我这里是把数据写入了yaml文件,然后通过对文件的读取,获取到驱动器参数,这样的话一旦以后有所变动,我就可以直接在yaml文件中进行修改,而不必去代码中找,作出变动。
首先简单的介绍一下yaml文件的写法吧,其实并不是很复杂,和python很像,yaml文件对格式要求也是很严格的,一定要缩进,记住这一点就好了。同样注释也是#
在yaml文件中字典的写法就是
key: value(:后面一定要有一个空格,value的值无论是什么类型都可以不加引号)
实例:
一定要记住空格,上面的a,b,c就是key,这个值是可以随便定义的,但是最好还是规范一点,不然后面自己找起来就很麻烦,然后字典中的字典就是
先写一个A:下面的内容全部tap往后缩进,这就表示a,b,c的值全在A这个字典中,同时呢,a,b,c也是一个字典。
那么怎么去读yaml文件呢
yaml文件的读取我们可以使用yaml.load()方法,为啥不用f.read()呢,这里顺便说一下这两种方法的区别吧
f.read()读取出来的结果是字符串类型的
yaml.load()读取出来的结果是字典类型的
我们需要进行数据分离,我们就要拿到yaml中的数据,而字符串类型是不支持我们通过key获取到value的值的,所以我们选择使用yaml.load()
我们可以看一下使用yaml.load()的结果
好了,yaml简单的介绍完了,那么我们如果进行数据分离呢?
直接贴上我的成果
附上代码:
我为什么platformVersion这个参数前加上str呢,是因为运行的提示我这个参数必须是str类型,所以转换一下,这样就算是最简单的数据分离了,把驱动器的数据与代码进行分离。
import yaml
from appium import webdriver
class DesiredCaps:
def __init__(self):
# 读取yaml文件里的设备数据
with open('../desired_caps.yaml', 'r', encoding='utf-8') as f:
dl = yaml.load(f, Loader=yaml.FullLoader)
d = dl['cs_caps']
# 将设备配置写入字典中进行使用
desired_caps = {}
desired_caps['platformName'] = d['platformName']
desired_caps['platformVersion'] = str(d['platformVersion'])
desired_caps['deviceName'] = d['deviceName']
desired_caps['appPackage'] = d['appPackage']
desired_caps['appActivity'] = d['appActivity']
desired_caps['skipServerInstallation'] = d['skipServerInstallation']
desired_caps['autoGrantPermissions'] = d['autoGrantPermissions']
desired_caps['noReset'] = d['noReset']
self.driver = webdriver.Remote('http://0.0.0.0:4723/wd/hub', desired_caps)
self.driver.implicitly_wait(5)
# 获取driver
def get_driver(self):
return self.driver