Python 一个基于 python 的简易的多设备同步运行脚本的小框架

saint228 · June 18, 2019 · Last by codeskyblue replied at June 18, 2019 · 595 hits

关键词:Python、多设备同步运行、Airtest
工作中需要运用到多设备同步运行安卓应用的unittest测试脚本。所以写了一个比较简单的小框架,分享给大家。
代码可以在https://github.com/saint228/DreamMultiDevices上取到。
简要说明一下:
项目结构如图

需要事先安装airtest、pocoui、BeautifulReport、xlwings等库。在TestCase目录下放入你写好的Unittest测试脚本。在config.ini里配置好你的app的包名、安装路径、测试用例范围等参数。
连接好期望同步执行用例的设备以后。从根目录的start.py启动,会去config.ini里读取设备列表,如果不填则默认读取当前连接的所有设备。
然后根据设备分配进程。

for i in range(len(devicesList)):
madb=Madb(devicesList[i])
# 根据设备列表去循环创建进程,对每个进程调用下面的enter_processing/enter_enter_performance方法。
if madb.get_androidversion()<5:
print("设备{}的安卓版本低于5,不支持。".format(madb.get_mdevice()))
continue
else:
p1 = Process(target=enter_performance, args=(madb,))
list.append(p1)
p2=Process(target=enter_processing, args=(i,madb,))
list.append(p2)
for p in list:
p.start()
for p in list:
p.join()

这里会调用2个函数:一个enter_performance负责性能监测而另一个enter_processing负责脚本运行。
先说enter_processing,该函数负责确保设备连接正常,然后调用PushApk2Devices函数,推送apk到设备上并运行。再调用RunTestCase函数,运行TestCase目录里的用例。用例执行完以后,会调用BeautifulReport库,每个设备生成一份html报告。

而enter_performance,该函数会根据每个设备创建一个excel文件,然后调用一堆ADB方法,采集ADB的内存、CPU等参数并同步截图,大概每4、5秒采集一次。汇总到excel文件里。ADB性能比较差,有用UWA、WeTest等高级货的就不用看这块了。

这个框架是工作闲暇时随性写的,前后断断续续写了两个月吧,根据需求的变动又零零散散加了不少功能,也没写什么注释,可读性比较差。
本人接触python不到半年,水平也有限,放到论坛上只是希望能帮到一些苦恼于app多设备同步执行的小伙伴,各位大佬勿喷。

共收到 2 条回复 时间 点赞

很不错,加油吴总

挺不错的

需要 Sign In 后方可回复, 如果你还没有账号请点击这里 Sign Up