测试中经常需要测试 App 在手机上兼容性与功能(由于 App 通过蓝牙与设备通讯,不能云测,全部真机测试),App 提供了读写数据速度与签名耗时功能,有四种不同设备,这样采集数据有 n(手机) X 4(设备) X 3(读速度/写速度/签名耗时),手机量大,如果全手动测试慢不说,还很枯燥,之前测过 100 多台手机,由于一直盯着手机按键和设备,脖子就会痛。
这里有个背景就是 App 扫描连接到设备后,其它手机 App 将扫描不到, 构想是使用 Appium+python,创建一个线程类来测试,设计每个线程测试一台手机,这样应该可以至少节省 1/3 时间。
由于不同线程一起执行安装软件,所有操作目录文件都一样,先后不一,导致文件被重写,这样导致混乱,所以在安装软件做了加锁操作,应该对临时目录设置 guid 这样就不会有问题,以后修改源码试试
class TestApp(threading.Thread):
###############
# 每一台手机对应一个Appium进程,每个进程设置不同端口号
#udid 手机的udid,udid由于经常用到,所以获取手机udid函数写在一个单独py中,使用时import就可以了
# model 手机型号
# kesSN 设备序列号数组,
# port
def __init__(self, udid, modle, keySN, port='http://localhost:4723/wd/hub'):
desired_caps = {}
desired_caps['platformName'] = 'Android'
desired_caps['deviceName'] = modle
desired_caps['udid'] = udid
desired_caps['appPackage'] = 'com.es.estestesmobile'
desired_caps['appActivity'] ='.connect.TestActivity'
desired_caps['app'] = 'C:\Python27\xxxxxx.apk'
desired_caps['unicodeKeyboard'] = True
desired_caps['resetKeyboard'] = True
self.keySNS = deepcopy(keySN)
self.modle = modle
self.port = port
self.desired_caps = desired_caps
threading.Thread.__init__(self)
self.driver = None
self.phoneUdid = udid
#codeing=utf-8
# 获取udid模块,返回是个字典形式
#return phone info(uuid,model) or False
import os
import re
def getPhoneInfo():
dict = {}
os.system('adb devices -l > devices.txt')
fp = open('devices.txt', 'r+')
text = fp.readlines()
if len(text) < 3:
return False
for el in text[1:-1]:
list = re.split(' |:',el)
if len(list) < 4:
continue
if list[-3] == '':
dict[list[0]] = os.popen('adb -s'+' '+list[0]+' shell getprop ro.product.model').readlines()[0]
else:
dict[list[0]] = list[-3]
if len(dict) == 0:
return False
return dict
def test():
keySN = ['229200000006','229000000007','229400000005','229700000004']
ports = ['http://localhost:%d/wd/hub'%x for x in range(4723, 4739, 2)]
phoneInfo = Function.getPhoneInfo()
testThreadNum = min(len(keySN), len(ports), len(phoneInfo))
i = 0
for k,v in phoneInfo.iteritems():
TestApp(k, v, keySN,ports[i]).start()
i = i + 1
if(i > testThreadNum):
break
并将采集的数据填入 excel 表格 (使用 xlrd,xlutil),截取一部分数据
再使用 pychartdir 将采集数据绘制成图表