目录
前言:
在回归测试阶段,UI测试,兼容测试是测试的必要步骤。UI自动化的本身是比较冗余的测试,但是换个角度思考,UI自动化同时连接多台设备,那么在回归测试时,在同一个脚本下产生的测试结果是非常有价值的。
不同设备在并发下的测试结果可以为我们提供:
1. 兼容性测试(不同的手机品牌,Android版本, 分辨率等)
2. 性能测试(通过安装Emmagee,监控不同手机在同脚本下,性能的变化)
3. 界面对比(通过图像识别opencv,截图对比等 查看在相同页面的变化)
思路:
1. 启动多路appium服务
2. 启动并连接多路手机端
3. 运行并生成测试报告
问题:
1. python的unittest框架和java不同,不支持参数传入,可以通过重写unittest.TestCase的init添加参数
2. appium 通过命令行启动,需要安装非desktop的版本,且最好安装1.9版本appium,1.0我启动不了
框架代码截取:
1. 重写unittest的初始化函数
class ParametrizedCase(unittest.TestCase):
def __init__(self, methodName='runTest', param=None):
super(ParametrizedCase, self).__init__(methodName)
global devices
devices = param
@classmethod
def setUpClass(cls):
cls.driver = connect_device(devices)
@classmethod
def tearDownClass(cls):
cls.driver.close_app()
cls.driver.quit()
2. 封装启动appium的服务方法:
基于 appium 的启动命令
appium -p -bp -U
封装多线程启动
class AppiumServer:
def __init__(self, kwargs=None):
self.kwargs = kwargs
def start_server(self):
"""start the appium server
"""
for i in range(0, len(self.kwargs)):
cmd = "appium --session-override -p %s -bp %s -U %s" % (
self.kwargs[i]["port"], self.kwargs[i]["bport"], self.kwargs[i]["devices&