点击关注,我们共同每天进步一点点!
目录
一,前言
1 背景
2 Airtest Project简介
3,环境
二,安装poco
四,使用pytest框架,修改脚本,调试运行
五,总结
一,前言
1 背景
因公司业务需要做支付宝小程序的UI自动化测试,于是在网上查找小程序的自动化资料,发现微信小程序是有自己的测试框架的,但几乎找不到支付宝小程序UI自动化测试相关的资料。白piao失败,那就只能自己从零开始整了。
因为之前已经用 Python + appium + unittest 搭建好了android app的UI自动化测试,于是刚开始就想直接套用这个框架,当时认为小程序页面就其实就是相当于一个特殊的web页面,觉得应该可行。但有天脑子一热想尝试使用网易的airtest与单元测试框架pytest结合。为了验证可行性,开始查看Airtest官方文档,并在Airtest Project官网下载了AirtestIDE(AirtestIDE官方文档),尝试着编写测试用例demo。
2 Airtest Project简介
Airtest Project主要包含 Airtest 和 Poco 两个测试框架:
Airtest框架,是一个跨平台的、基于图像识别的UI自动化测试框架,适用于游戏和App,支持平台有Windows、Android和iOS
Poco框架,是一款基于UI控件识别的自动化测试框架,目前支持Unity3D/cocos2dx-*/Android原生app/iOS原生app/微信小程序,也可以在其他引擎中自行接入poco-sdk来使用,用appium做UI测试的同学应该比较容易上手。
3,环境
这里选择 poco + pytest,Windows 10,测试机操作系统为Android 10
二,安装poco
AirtestIDE后续只用于生成操作步骤代码(定位及操作),用例的运行会使用Pycharm,因此Python环境需要安装pocoui第三方库
#安装命令,使用清华镜像pipinstallpocoui-ihttps://pypi.tuna./simple
三,使用AirtestIDE的Poco辅助工具录制代码
AirtestIDE连接手机,使用Poco辅助工具录制被测小程序操作步骤生成代码
1,打开AirtestIDE,按照步骤:
1.1,连接手机。打开手机开发者调试模式,连接电脑,此时AirtestIDE右侧会出现设备id,点击connect连接手机。
1.2,选择新建.py。点击上图2处,选择.py 纯Python(纯文本),然后会弹窗需要设置路径参数,这里暂时可以只设置Save Path,其他默认即可。
1.3,点击OK后,会在Save Path设置的路径里生成对应的.py文件,且生成初始化内容如下:
其中auto_setup() api的参数可以查看Airtest官方接口文档。
2,Poco辅助窗选择Android,点击2处Yes,我们会发现脚本里会新增Android相关的代码。
选中Poco辅助窗的Poco auto recording按钮,将光标放在编辑器的15行,鼠标点击操作需要测试的小程序即可录制操作步骤。Poco辅助窗的这三个按钮大家可以参考官方文档说明,或者分别选中后鼠标点击被测APP界面就很快知道区别了。
四,使用pytest框架,修改脚本,调试运行
1,在AirtestIDE中调试代码
小程序操作步骤录制如下,可以在AirtestIDE上面先调试运行,是否正确。
代码如下:
#-*-encoding=utf8-*-__author__="xiaoqq"fromairtest.core.apiimport*frompoco.drivers.android.uiautomationimportAndroidUiautomationPocopoco=AndroidUiautomationPoco(use_airtest_input=True,screenshot_each_action=False)fromairtest.cli.parserimportcli_setupifnotcli_setup():auto_setup(__file__,logdir=True,devices=["Android://127.0.0.1:5037/5EN0219305002521",])#scriptcontentprint("start...")poco(text="扫一扫").click()poco(text="相册").click()poco("com.alipay.mobile.beephoto:id/iv_photo").click()poco(text="大物洗").click()poco(text="选好了").click()poco(text="已关门").click()poco(text="余额").click()poco(text="去支付").click()poco(text="立即支付").click()#generatehtmlreport#fromairtest.report.reportimportsimple_report#simple_report(__file__,logpath=True)
2,完善代码
接下来就在Pychram里打开该.py文件,开始完善脚本。增加断言,并使用pytest管理、执行用例
#-*-encoding=utf8-*-__author__="xiaoqq"importpytestfromairtest.core.apiimport*@pytest.fixture(scope='function',params=['Android://127.0.0.1:5037/64c83202'])defbase_poco(request):'''构造新的poco,完成测试用例执行前、后的步骤@return:返回新的poco对象'''frompoco.drivers.android.uiautomationimportAndroidUiautomationPococonnect_device(request.param)base_poco=AndroidUiautomationPoco(use_airtest_input=True,screenshot_each_action=False)base_poco.device.wake()start_app("com.eg.android.AlipayGphone")sleep(2)yieldbase_pocosleep(2)stop_app("com.eg.android.AlipayGphone")sleep(2)deftest_wash_order(base_poco):print("start...")base_poco(text="扫一扫").click()base_poco(text="相册").click()base_poco("com.alipay.mobile.beephoto:id/iv_photo").click()base_poco(text="大物洗").click()base_poco(text="选好了").click()base_poco(text="已关门").click()base_poco(text="余额").click()base_poco(text="去支付").click()base_poco(text="立即支付").click()time.sleep(1)result_1=base_poco(text="支付成功").exists()assertresult_1==Trueprint("end...")if__name__=='__main__':pytest.main()
3,运行代码
运行该模块,可以查看手机上的操作步骤,结果通过!
简单的demo已经跑通,后续需要优化项目的目录结构,并加入截图、日志、测试报告模块,搭建成一个完整的自动化测试项目。
五,总结
相对来说appium太笨重了,而网易提供的AirtestIDE里的poco辅助工具可以将元素定位及操作可以直接生成为代码。
在AirtestIDE中只能运行单个的脚本,无法批量的运行测试脚本和管理测试脚本,而利用Airtest提供的开源的API结合其他的python库使用,可以实现更复杂的代码逻辑。
poco框架看起来代码简洁程度比airtest更好,维护更方便,且airtest框架基于图像识别,实际运行工程中可能会受识别率的影响。但对于新手或者代码基础薄弱的测试同学而言,airtest更容易上手。
好了 学习也就到此结束了 想了解更多相关知识请关注我吧!下面是小编想对读者大大们写的一封信哦! 记住要认真读哦!
感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接免费拿走:
①2000多本软件测试电子书(主流和经典的书籍应该都有了)
②软件测试/自动化测试标准库资料(最全中文版)
③项目源码(四五十个有趣且经典的练手项目及源码)
④Python编程语言、API接口自动化测试、web自动化测试、App自动化测试(适合小白
⑤ Python学习路线图(告别不入流的学习)
上图的资料 在我的QQ技术交流群里(技术交流和资源共享,广告进来腿给你打断)
可以自助拿走,群号768747503备注(csdn999)群里的免费资料都是笔者十多年测试生涯的精华。还有同行大神一起交流技术哦
————————————————
「学习资料 笔记 工具 文档领取」
扫描二维码,
备注“csdn999”
小姐姐邀你一起学习哦~~
和志同道合的测试小伙伴一起讨论测试技术吧
一定一定一定 要备注暗号:CSDN999
————————————————