airtest 多设备同时运行_GitHub - zhouweisong/airtest_runner: 采用python多进程,实现多设备并发运行批量的airtest脚本...

airtest_runner

采用python多进程,多设备并行批量airtest脚本

我的运行环境为python3.7,其他依赖包版本在requirements.txt文件里

python2的话需要自己调整部分代码做兼容;

懒得安装环境和二次开发的可以直接到release下载exe文件熟肉使用

1.1.exe使用步骤

(1).双击打开airtest启动器.exe,进入程序主界面

(2).左边选取安卓设备,右边点击‘选取脚本路径’按钮,选择脚本所在的根目录,选好后可在右边窗口选取要运行的脚本;

(3).选取模式,模式分两种,在【2.config.ini 全局配置】中会有介绍;

(4).点击启动按钮,通过控制台查看运行情况,静静地等待运行结果;

(5).运行结束后会有一个弹窗提示,点击ok按钮查看该次的报告;

(6).历史报告在logs_root文件夹下

1.2.源码使用步骤

(1).把自己写的air脚本放置到scripts文件夹下

(2).打开config.ini,根据注释填写运行模式、脚本名称及设备序列号;

(3).运行main.py文件,推荐用pycharm运行,全局环境下也可以直接用 运行.bat 来运行;

(4).等待运行结果,自动生成的报告将在logs_root文件夹;注:报告依赖airtest的静态,这里不建议更改报告的文件结构

2.config.ini 全局配置

[baseconf]

scripts_root = scripts

scripts =

devices = all

mode = 1

platform = Android

scripts_root #脚本根目录,默认为工程目录下的scripts文件夹

scripts # 要运行的脚本名称列表,半角逗号连接,如:SzwyMobile1014-1036.air,hh.air,无内容则按顺序运行scripts目录下所有脚本

devices = all # 设备id,半角逗号连接,格式为:PBV0216727000183,8TFDU18926001948,为空默认选取电脑上连的第一台设备,all则运行所有设备

mode = 1 # 1:每台设备各自运行所有脚本,2:所有设备分配运行所有脚本

platform = Android # 平台为Windows时设备号需填窗口句柄

这里提供两种模式:

mode = 1:每台设备各自运行所有要跑的脚本,即批量并行相同脚本,报告数量=脚本数量x设备数量,适合做兼容测试;

mode = 2:采用消息队列,将所有要跑的脚本逐一以分配的方式给空闲的设备运行,报告数量=脚本数量,适合做功能的回归测试;

3.runner.py

利用multiprocessing根据设备数量生成进程池,单个进程里再利用unittest生成每一个脚本的测试用例

4.report.py

根据模板生成单个airtest脚本测试的报告,重写了airtest源码中若干源码,减少报告中的静态资源的路径依赖

5.utils.py

该模块提供了一些通用接口,其中还包括压缩本地报告上传至云平台的代码,上传地址需使用者自己填写

def PostZipFile(sZipFile):

sPostUrl = '' # 上传路径

sName = os.path.basename(sZipFile)

file = {sName: open(sZipFile, 'rb')}

headers = {

'Connection': 'keep-alive',

'Host': '10.32.17.71:8001',

'Upgrade-Insecure-Requests': '1',

}

r = requests.post(sPostUrl, files=file, headers=headers)

if r.status_code == 200:

Logging('报告上传成功')

else:

Logging('报告上传失败')

Logging('状态码:%s' % r.status_code)

Logging(r.content)

def UnzipFile(sZipFile):

sDir, sZipFileName = os.path.split(sZipFile)

z = zipfile.ZipFile(sZipFile, 'r')

sPath = os.path.join(sDir, sZipFileName.replace('.zip', ''))

if not os.path.exists(sPath):

os.mkdir(sPath)

z.extractall(path=sPath)

z.close()

def PostReport2TestWeb(sExportPath):

sZipFile = ZipFile(sExportPath)

PostZipFile(sZipFile)

os.remove(sZipFile)

PostReport2TestWeb的参数为报告的绝对路径

5.video.py

该模块利用OpenCV实现Windows端的录屏功能,弥补了airtest在PC运行时无法录屏的缺点。其中视频的帧率和录制时间间隔可以自己调整至一个合适的数值

6.file_lock.py

为了记录单次测试里每一个报告的聚合结果,这里采用将结果写入临时文件的方式。由于存在多条进程同时对一个文件进行读写操作的情况,我只是简单得用了文件锁来处理了一下。

经测试在windows端进程较多的情况下仍会出现结果写入异常的情况,条件足够的话建议将结果保存在自己的数据库中。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
引用提到了两种无线连接设备的方法,其中一种是通过airtest IDE来连接,另一种是通过python代码来直接连接。在python中,可以使用airtest-python库来进行无线连接和自动化测试。该库提供了一系列的API和方法,可以模拟用户操作,如点击、滑动等,并获取设备屏幕上的信息。 使用airtest-python库进行无线连接的步骤如下: 1. 首先,确保你已经安装了Python,并且使用pip安装了airtest-python库。 2. 打开终端或命令行窗口,导入airtest模块,并连接到设备。可以使用connect_device方法来连接设备,指定设备的IP地址和端口号。例如:connect_device('android:///10.15.0.241:1234'),这将连接到IP地址为10.15.0.241,端口号为1234的Android设备。 3. 连接成功后,你可以使用airtest提供的方法来进行自动化测试,如点击、滑动、截图等。可以根据具体需求调用相应的方法。 除了使用airtest IDE进行连接和测试外,你也可以通过编写Python代码来实现无线连接和自动化测试。可以使用adb命令来连接设备,然后通过airtest-python库来进行操作。例如,可以使用adb命令启动设备的TCP模式,然后使用connect_device方法连接到设备的IP地址和端口号。 综上所述,无论是通过airtest IDE还是通过python代码来连接设备,都可以使用airtest-python库提供的API和方法来进行无线连接和自动化测试。<span class="em">1</span><span class="em">2</span><span class="em">3</span>

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值