使用AirtestProject+pytest做支付宝小程序UI自动化测试

 🔥 交流讨论:欢迎加入我们一起学习!

🔥 资源分享耗时200+小时精选的「软件测试」资料包

🔥 教程推荐:火遍全网的《软件测试》教程  

📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!

一,前言

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第三方库

 
  1. # 安装命令,使用清华镜像

  2. pip install pocoui -i https://pypi.tuna.tsinghua.edu.cn/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上面先调试运行,是否正确。

代码如下:

 
  1. # -*- encoding=utf8 -*-

  2. __author__ = "xiaoqq"

  3. from airtest.core.api import *

  4. from poco.drivers.android.uiautomation import AndroidUiautomationPoco

  5. poco = AndroidUiautomationPoco(use_airtest_input=True, screenshot_each_action=False)

  6. from airtest.cli.parser import cli_setup

  7. if not cli_setup():

  8.  auto_setup(__file__, logdir=True, devices=[

  9.  "Android://127.0.0.1:5037/5EN0219305002521",

  10.  ])

  11. # script content

  12. print("start...")

  13. poco(text="扫一扫").click()

  14. poco(text="相册").click()

  15. poco("com.alipay.mobile.beephoto:id/iv_photo").click()

  16. poco(text="大物洗").click()

  17. poco(text="选好了").click()

  18. poco(text="已关门").click()

  19. poco(text="余额").click()

  20. poco(text="去支付").click()

  21. poco(text="立即支付").click()

  22. # generate html report

  23. # from airtest.report.report import simple_report

  24. # simple_report(__file__, logpath=True)

2,完善代码

接下来就在Pychram里打开该.py文件,开始完善脚本。增加断言,并使用pytest管理、执行用例

 
  1. # -*- encoding=utf8 -*-

  2. __author__ = "xiaoqq"

  3. import pytest

  4. from airtest.core.api import *

  5. @pytest.fixture(scope='function', params=['Android://127.0.0.1:5037/64c83202'])

  6. def base_poco(request):

  7.     '''

  8.     构造新的poco,完成测试用例执行前、后的步骤

  9.     @return: 返回新的poco对象

  10.     '''

  11.     from poco.drivers.android.uiautomation import AndroidUiautomationPoco

  12.     connect_device(request.param)

  13.     base_poco = AndroidUiautomationPoco(use_airtest_input=True, screenshot_each_action=False)

  14.     base_poco.device.wake()

  15.     start_app("com.eg.android.AlipayGphone")

  16.     sleep(2)

  17.     yield base_poco

  18.     sleep(2)

  19.     stop_app("com.eg.android.AlipayGphone")

  20.     sleep(2)

  21. def test_wash_order(base_poco):

  22.     print("start...")

  23.     base_poco(text="扫一扫").click()

  24.     base_poco(text="相册").click()

  25.     base_poco("com.alipay.mobile.beephoto:id/iv_photo").click()

  26.     base_poco(text="大物洗").click()

  27.     base_poco(text="选好了").click()

  28.     base_poco(text="已关门").click()

  29.     base_poco(text="余额").click()

  30.     base_poco(text="去支付").click()

  31.     base_poco(text="立即支付").click()

  32.     time.sleep(1)

  33.     result_1 = base_poco(text="支付成功").exists()

  34.     assert result_1 == True

  35.     print("end...")

  36. if __name__ == '__main__':

  37.     pytest.main()

3,运行代码

运行该模块,可以查看手机上的操作步骤,结果通过!

简单的demo已经跑通,后续需要优化项目的目录结构,并加入截图、日志、测试报告模块,搭建成一个完整的自动化测试项目。

五,总结

  • 相对来说appium太笨重了,而网易提供的AirtestIDE里的poco辅助工具可以将元素定位及操作可以直接生成为代码。

  • 在AirtestIDE中只能运行单个的脚本,无法批量的运行测试脚本和管理测试脚本,而利用Airtest提供的开源的API结合其他的python库使用,可以实现更复杂的代码逻辑。

  • poco框架看起来代码简洁程度比airtest更好,维护更方便,且airtest框架基于图像识别,实际运行工程中可能会受识别率的影响。但对于新手或者代码基础薄弱的测试同学而言,airtest更容易上手。

最后我邀请你进入我们的【软件测试学习交流群:785128166】, 大家可以一起探讨交流软件测试,共同学习软件测试技术、面试等软件测试方方面面,还会有免费直播课,收获更多测试技巧,我们一起进阶Python自动化测试/测试开发,走向高薪之路

作为一个软件测试的过来人,我想尽自己最大的努力,帮助每一个伙伴都能顺利找到工作。所以我整理了下面这份资源,现在免费分享给大家,有需要的小伙伴可以关注【公众号:程序员二黑】自提!

  • 19
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值