你怎么知道我昨天抽盲盒抽中了我喜欢的DIMOO呀~~~~~~~~原本是不想抽的,结果我那脚死活都踏不出泡泡玛特的门,那我只好抽一个啦,嘻嘻,不然得待一天!

         言归正传言归正传,我是一个完全的自动化测试新手,正在一步一步地学习Airtest框架。接下来的文章我将记录我的入门过程,希望与大家分享我的探索经历。如果各位在阅读中发现任何问题或建议,请随时指出,我们共同进步。学习路上难免会遇到挑战,但每一次尝试都是成长的机会。

        在进入测试之前我针对要测试的微信小程序写了一个思维导图,把主功能测试部分按点整理了出来,所以今天这篇文章我就第一个主功能——供应商查询(supplier)的第一部分——入口(entry)来进行脚本编写。今天遇到许多问题,在最后一部分我将会全部提及。

一、设计思路      

【用例名称】供应商查询入口测试

【前置条件】用户已进入小程序首页

【测试步骤】
1. 点击供应商查询入口
2. 等待页面加载
3. 校验页面标题
4. 校验列表数据

【预期结果】成功进入页面,数据正常展示

        脚本我依旧采用模块化函数设计,分为两个主要流程(函数):页面进入、页面校验。页面进入与上篇文章大差不差,在页面校验部分我分为断言小程序是否被成功打开、断言“港口供应商”页面是否被成功打开、“港口供应商”页面状态判断三部分内容。

二、代码编写

(1)函数一:页面进入(enter_supplier_page)

        (本次测试的前置条件是用户已进入小程序首页,但是为了复习巩固上次的内容,我还是从进入微信开始,开始部分进入微信与上次文章不同,具体原因我将在最后的问题总结中提到。

        1.进入微信;

        2.下滑找到小程序;

        3.找到并进入“港口供应商”图标。

 温馨提示:本次代码与上次代码函数使用方式是一样的,只不过这次我将图片切换为代码模式了。切换方式为:选中图片单击右键👉选择【图片/代码模式切换】即可。

         [swipe]函数:滑动功能,使用时先框选一个位置,然后点击一下滑动结束位置即可。

         [sleep]函数:等待加载,默认时间为1,可自己根据需求调整来等待页面加载。

         [touch]函数:触摸功能,使用时框选需要点击的图标即可。

(2)函数二:页面校验(check_page_load)

        1.断言小程序是否被成功打开;

        2.断言港口供应商页面是否被成功打开;

        3.页面正常与异常判断。

        [exists]函数:判断是否存在,使用时框选要判断是否存在的元素图像即可。 

        [asstert_exists]函数:断言存在,使用时框选任务成功必须存在的元素图像即可。

        [raise]:主动抛出一个错误,自定义测试失败并中断。

        [wait]函数:在规定时间内等待某个元素出现,使用时框选等待出现的元素图像即可。

        对页面状态进行判断时,我分为了三种状态,第一种是页面正常有数据(列表资料卡片存在),第二种是页面正常无数据(列表资料卡片为空),第三种是异常状态(两种情况都不存在)。用if-elif-else实现,如果未能识别到前两种情况会出现的图像元素,则表示测试失败,输出错误提示信息。

三、运行结果

【报告目录部分】

(1)失败

        这次失败原因是因为打开了错误的小程序,我总结原因是因为小程序的图标我只截取了图像部分,应该将图像和小程序名称一起截取,这样Aietest在进行识别过程中会更加准确。

        这次失败是因为断网,对异常了做了判断,并且[snapshot]函数将失败页面截图显示到报告中。

(2)成功

【Log部分】

第一种情况:

第二种情况(这一部分我只选中了部分代码运行测试结果):

第三种情况:

四、问题总结

【问题一】

        在上一篇文章中我用了shell("am start ...")来打开微信,但是由于微信主 Activity 不是标准入口,所以我这次改用start_app("com.tencent.mm"),用Airtest的原有的调用应用启动来打开微信,并且附加一层确保打开条件就是:如果start_app打不开,就使用图像识别来打开。

【问题二】

        对于断言[assert_exists],我原本以为是如果存在,则在报告中msg显示“成功”字眼(自己输入的测试点),但其实这个断言中的msg只是为失败设置的,也就是说成功了也会显示(但因为是成功的,所以不用在意),失败了也会显示(这个时候就发挥msg的作用了,显示失败的点)。

【问题三】

        小程序页面列表资料卡片无数据的时候的图像是浅色的,断网的时候页面什么也不显示,但是由于前者是浅色,所以总是识别将这两种情况混为一谈,输出同一种结果,我的解决方法是提高图像的匹配精度,避免误判。方法:将图像切换为代码模式,在Template("empty.png")中加入threshold=0.95(0~1,最好是不要超过0.95),最后的形式就是Template("empty.png", threshold=0.95)。此时将代码模式切换为图像模式也是修改之后的图像。

       今天写的脚本虽然很短,但是总结一下:使用了图片模板识别 UI、结合了条件判断处理多种页面状态、实现了异常自动截图 + 报错机制还有加入了注释及多层判断提升自动化脚本的稳定性和可维护性。

本篇文章先介绍这么多,待我下篇文章再继续奋斗!!!!!

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐