首页 > 其他分享 >Airtest自动化多设备测试框架DreamMultiDevices

Airtest自动化多设备测试框架DreamMultiDevices

时间:2022-09-18 11:45:58浏览次数:104  
标签:DreamMultiDevices Airtest 用例 adb 测试 自动化 填写 目录

上期回顾:Airtest+Poco多设备并发自动化游戏测试框架(遇到的问题)

编者注:
此框架作者写于2020年,这2年Airtest更新了一些版本,不确定是否可以直接拿来使用,也许要稍微改些东西。但可以通读代码学习其思路。

DreamMultiDevices

基于Python/Airtest/Unittest的自动化多设备测试
https://github.com/saint228/DreamMultiDevices

3MB的效果动画,只能放链接了:
https://github.com/saint228/DreamMultiDevices/blob/master/template/%E6%A1%86%E6%9E%B6.gif

1.须事先安装如下环境:
python3.6以上、airtest、pocoui、BeautifulReport、unittest、xlwings(如果你想使用Excel储存性能数据的话)。安装方法:

pip install DreamMultiDevices

首先,非常重要的一点。先确认你电脑里的adb环境!!!本框架使用airtest的adb作为默认adb,目前该adb采用40版本,电脑里其他应用如果使用adb且非该版本,会产生冲突。可以复制\Lib\site-packages\airtest\core\android\static\adb 目录下的所有文件,替换掉本地的其他adb版本。

其次,python的安装目录不要有空格,类似 C:\Program Files\python 这样的目录因为中间有空格,在执行adb命令时会报错。如果不愿意重装python,可以手动修改框架代码里的各个ADB变量,为其指定合理的路径。

第一次运行前需要手动修改config.ini,里面的包名和包路径是必填项,也支持在运行过程中通过set方式修改。

madb.set_packagename("")#填待测apk的包名
madb.set_packagepath("")#填待测apk在硬盘上的绝对路径
madb.set_TestCasePath("")#填本地测试用例目录的绝对路径

程序入口

from DreamMultiDevices.start import *

if __name__ == "__main__":
    start()

2./config.ini。整个项目的配置文件。

[config]
packName填写待测试包名,str;
activityname 填写测试包的入口类名,留空的话,Madb也会在需要时自动计算,可能会多花一点时间。
deviceslist填写测试设备名,以逗号分隔,(PS:如不想使用配置,留空即可,则读取当前所有已连接的设备)元组;
apkpath填写待测试应用的安装地址,须使用绝对路径,str;
testcase填写期望测试的用例id,须是一个int元组,RunTestCase函数会比对testcase元组与TestCase目录下的TC_*.py文件,在元组内的用例才会被测试;
needclickinstall和needclickstartapp 填写True或False,设置是否需要安装点击或运行点击,不为True则不执行;
timeout_of_per_action填写全局sleep时间,int;
timeout_of_startapp填写安装app等待时间,int(已废弃);
iteration填写权限脚本循环次数,int。

skip_pushapk2devices填写“是否跳过pushapk2devices函数”的标志,1为True 0为False,以下同。
auto_delete_package填写“是否在安装包过程中自动删除设备里的旧包”的标志。
auto_install_package填写“是否需要重新安装新包”的标志。
skip_check_of_install填写“是否要跳过安装过程中的自动输入权限检查部分”的标志。
skip_check_of_startapp填写“是否要跳过安装过程中的自动输入权限检查部分”的标志。
skip_performance填写“是否要跳过性能监控部分”的标志。
storage_by_excel填写“是否使用excel存储性能数据”的标志,填1为使用excel,填0为使用json。

[TestCaseforDevice]
按设备配置执行用例,不填则默认全部

[Email]
mail_host 邮件host地址
mail_user 邮件账户名
mail_pass 邮件密码
sender    邮件发件人
receivers 邮件收件人

 

3./start.py。可以使用pycharm运行,也可以被其他方法调用运行。

4./core/index index是整个框架的索引,负责根据devices分发进程,让每个设备各自去运行enterprocess()函数。该函数里进行设备的初始化,在确保初始化成功、安装包成功的情况下,启动待测试apk并调用RunTestCase函数,进行测试用例的分发。当needPerformance为True时,还会同步运行enter_performance()函数,对设备进行性能监控并同步记录在excel文件里。

5./core/MultiADB Madb类,集成了各个与device有关的方法。

6./tools/PushApk2Devices 负责安装apk到设备上,会先判断待测包是否已存在,存在则删除并重装,重装时会自动调用inputThread进行安装权限的点击。这里的代码需要用户自行完成,具体写法请参考inputThread里已经提供的示范代码。

7.MultiAdb.py里的StartApp函数 。StartApp负责启动apk,然后会进行应用开启权限的点击,此处代码也需要用户自行完成。

8./core/RunTestCase。RunTestCase是运行测试用例的分发函数,读取之前配置表上的testcase元组并与TestCase目录下的文件进行比对,一致的则列入测试范围。

9./TestCase目录。本目录下放置所有的待测试用例。用例须以TC_开头,用例采用标准的unittest格式。每条用例的执行结果会是一个suite对象,并在全部执行完以后,聚合到RunTestCase的report对象上。可以通过set_TestCasePath("")方法重置。

10./TestCast/TC_XXX.py 单个用例的执行文件,由用户自行编写,最后须符合unittest格式。特别要说明一点,BeautifulReport的默认截图方法是异常时触发语法糖截图。使用时略有不便,我新增了GetScreen()函数,可以在任意需要时实时截图,优先采用MiniCap方式截图。

11./Report/Html报告。RunTestCase使用BeautifulReport库进行报告输出。会在调用文件所在的目录生成一个Report目录,输出内容在Report目录下,以设备名和时间命名,相关截图则存储在Report/Screen目录下。

12.新增了Performance.py,用以处理adbdump抓取的性能数据,同时在tools目录下新增了Excel.py。用来处理表格。限于adb的效率,大概4、5秒能抓一次,抓取时会同步截图。划重点:性能测试不支持模拟器,所有的手机模拟器都是x86架构,而99%的安卓手机都是arm架构,adb在不同的架构下抓取dump的返回值不同,所以我写的adb抓性能的代码在模拟器上运行会出错。这不是bug,也不会修。(2019/8/13实现)

13.完成性能测试后,会在/Report目录下重新生成xxx_PLUS.html的报告,是在BeautifulReport基础上拼接了性能部分的页面显示。

[email protected]()装饰器是用来限制每个用例执行时间上限的,因为有时候碰到用例执行被block,占用大量时间导致脚本运行不畅。挂了这个装饰器以后,可以限定每个用例的最长时间,超时会抛异常并开始执行下个用例。

15.config.ini里新加了2个字段:adb_log以及keywords。用来控制是否监听adblog以及监听的过滤字段。

---------------------------------------------------------------------------------

关注微信公众号即可在手机上查阅,并可接收更多测试分享~

标签:DreamMultiDevices,Airtest,用例,adb,测试,自动化,填写,目录
From: https://www.cnblogs.com/songzhenhua/p/16704521.html

相关文章

  • winfrom程序,自动化?
    传统自动化工具-对象识别->库->脚本。uft、qtp、WinRunner。实现原理是识别界面对象,比如:界面中有文本框、标签、按钮,识别捕获对象后形成一个库,然后会把相应的对象的属性......
  • 微软出品自动化神器Playwright,不用写一行代码(Playwright+Java)系列(一) 之 环境搭建及
    一、前言半年前,偶然在视频号刷到某机构正在直播讲解Playwright框架的使用,就看了一会,感觉还不错,便被种草,就想着自己有时间也可以自己学一下,这一想着就半年多过去了。读到......
  • 17.1 xlrd模块 17.2接口自动化第一版17.3pymysql模块 17.4接口自动化第二版
    17.1xlrd模块#xlrd和openpyxl#1.什么是xlrd模块?#python操作excel主要用到xlrd和xlwt这两个库,即xlrd是读excel,xlwt是写excel的库。#关于xlrd/xlwt和openpyxl的差别#......
  • python自动化测试系列教程
    随着互联网产品更新迭代加快,Web开发和测试的需求也越来越大。很难想象,如果阿里的双11、京东的618,这些庞大繁杂的系统,由工程师们一个个手动测试,将会是一个怎样费时费力、......
  • 干货 | 录制你的第一个web 自动化测试用例
    ⬇️点击“下方链接”,提升测试核心竞争力!>>更多技术文章分享和免费资料领取Web应用程序的验收测试常常涉及一些手工任务,例如打开一个浏览器,并执行一个测试用例中所描述的......
  • Web自动化价值与体系
    比较功能测试和UI自动化测试功能测试 UI自动化测试对比相同点:两者的过程都是一样的,都是在系统页面做点击输入等操作,并拿到实际结果与预期结果进行对比不同点......
  • 干货 | web自动化总卡在文件上传和弹框处理上?
    ⬇️点击“下方链接”,提升测试核心竞争力!>>更多技术文章分享和免费资料领取在有些场景中,需要上传文件,而Selenium无法定位到弹出的文件框,以及网页弹出的提醒。这些都是需......
  • 干货 | APP自动化Android之属性获取与断言
    ⬇️点击“下方链接”,提升测试核心竞争力!>>更多技术文章分享和免费资料领取断言是UI自动化测试的三要素之一,是UI自动化不可或缺的部分。我们使用定位器定位到元素后,通......
  • Java接口自动化测试框架系列(八)测试结果通知(钉钉通知)
    通过前七步的框架搭建,此时框架已经可以开始进行接口测试了,但是运行的结果需要手动去项目的工作空间去查看,非常不方便。很多公司使用的钉钉来进行日常办公的沟通,我们也可以......
  • 基于Selenium Grid搭建自动化并行执行环境
    每天进步一点点,关注我们哦,每天分享测试技术文章本文章出自【码同学软件测试】码同学公众号:自动化软件测试,领取资料可加:magetest码同学抖音号:小码哥聊软件测试Selenium......