本文为大家介绍一下中通科技自动化测试框架。这个框架是基于 Pytest 做的二次开发,在 Pytest 的基础上我们接入了Airtest、UIAutomator和针对IOS的Facebook-wda这些框架。针对web的UI自动化测试,接入了微软的Playwright。同时为了CI能够接入进来,还接入了Jenkins API。还提供了脚手架工具,可以很方便地创建四种不同自动化项目的脚本模板。在CI服务端集成了CI Runner相关能力的支持,可以在Jenkins端更方便地去执行自动化测试脚本。
最后一部分是一些基础的服务能力,比如日志、报告、文件的读写、数据驱动的支持。
还有一部分是公司内部的一些通用能力,比如sso。公司内的项目都接入了sso统一认证登陆,所以在做自动化测试的时候,只需要引入一两个函数就可以方便地把登陆能力覆盖掉。另外一部分是协同工作消息的支持,打通了钉钉以及公司内部平台宝盒的消息通知,可以很方便地将自动化测试的结果及时同步给相关的开发测试人员。
下面是一个Android端自动化测试项目的模版,后续的一些能力的开发以及特殊业务的脚本都可以很方便地基于这个模板进行补充。自动化测试工程师就不需要再花费时间去搭建这样一个项目。
这里面我们可以看到这个框架提供的一些Pytest能力,比如说可以直接生成fixture的全局函数,方便后续的自动化脚本去调用。
下图是在实际自动化测试项目中,一个脚本中抽取出来的一个函数。我们可以看到,这个函数的名字叫add_meeting_member(d)。这里面有一个“d”,通过Pytest提供的fixture能力,把Android设备的实例采集进来。
在使用的时候直接通过这个“d”去调用框架内部的一些能力,比如通过这个图中d(text="发起会议").click(),这样一个click事件。这样就能够很快地定位到当前页面中这样的文本,触发点击事件。
通过这个例子就能看出我们这个框架所提供的一些能力、简洁程度。同时在书写这个脚本的时候,我们可以看到下面有不同的方式,同样是一个(d)也可以通过id的方式寻找到这个元素。
再往下的right_back_click(),btn_enter_click(),这些函数是我们对于一些常用能力做的基础控件的封装,这样可以方便我们调用这些函数。
下图是Web自动化测试的模板项目,这里面通过po的一些模式方便大家改造自动化脚本,统一组织自动化脚本。下面是一个简单的demo,这里面演示的是打开一个百度的网页,输入了一个字符,点击搜索,这样一个基本的操作。
这个框架里面使用的是Playwright框架,在这里给大家讲一下为什么选择这个框架。它是微软提供的,背靠大厂,稳定性和持续更新的能力会比较稳定。不像国内的一些框架,做到一半就不提供更新了。同时它也支持python语言的开发,提供多浏览器的支持。
下面给大家展示一下这个框架集成了Allure之后,在实际测试过程中产生的报告。大家可以看到,结果是比较清晰的。
下图是报告中一些比较具体的细节。我们可以看到在每一步执行后,会针对当前代码行触发的事件,对当前页面抓一张图。这样后期出现问题的时候就很容易定位出现问题的步骤是在哪个页面,在哪个操作事件上。方便我们去回归这个问题,及时把测试结果提交给开发人员。
同时支持Android、IOS和Web端,针对关键的点击事件、双击事件都可以去抓捕。