更多课程 选择中心

软件测试培训
达内IT学院

400-996-5531

链式调用的UI自动化框架设计


项目之前测试留下的UI测试框架异常简单(说的就是那个dagger),在使用上以及代码的可维护性上都存在一定问题。故而自己在原有的基础上修改,重新设计。

先抽象UI自动化代码中需要的东西:1.需要一个Driver,封装一些常见的行为,例如点击,输入,打开网页,需要支持超时,支持错误后自动截图等功能。2.需要一个断言器,快速断言节点的存在性,节点属性值,节点样式值,节点内容,节点格式,当前url等。3.需要一个处理公共行为的类,包含公共行为的方法,例如登陆等。

Driver是中心,Assertion需要的节点数据,当前页面数据等都需要Driver支持。当并发执行用例的时候,每个线程都需要一个Driver,每个Assertion需要对应一个Driver,两者要互相绑定,互相注入。Action则会调用其它测试用例类的静态方法,其中也需要提供Driver。

最终实现时,Driver是一个线程变量,在初始化时,构造一个Assertion和Action,并将自身注入其中。需要注意的是,TestNg中如果开启了用例的timeout,那么before函数和执行本体是不同线程,在before函数中配置线程变量,在本体中是不同的,因而需要关闭。

其次,在语法上,以描述顺序和过程的链式调用为主。包含以下几个顺序描述:

1.start()返回Driver对象,在BaseUITest(测试用例的基类)中被使用,表示测试用例的开始执行

2.then()返回Driver对象,在BaseUITest和Assertion中被使用,将上下文切到执行者

3.end()返回void,结束链式调用。

以下几个为行为描述:

1.action()返回Action对象,在Driver中定义。

2.test()和test(String)返回Assertion对象,在Driver和Assertion定义,String参数会设置成断言的描述

链式调用原则:

1.Driver中除了get方法(getElement),行为顺序描述方法外,均返回this,如open,click,pause等

2.Assertion中所有方法返回this

3.Action中所有方法返回Driver

最终,一个用例可以变成下边这样

代码的可阅读行提高了不少。

预约申请免费试听课

填写下面表单即可预约申请免费试听! 怕学不会?助教全程陪读,随时解惑!担心就业?一地学习,可全国推荐就业!

上一篇:【干货】测试用例设计进阶(下)
下一篇:关于编写测试报告的一些感想

嵌入式软件测试的日志怎么看?

如何用capl自动化测试脚本

嵌入式软件自动化测试?

白盒测试从哪里开始检测?

Copyright © 2023 Tedu.cn All Rights Reserved 京ICP备08000853号-56 京公网安备 11010802029508号 达内时代科技集团有限公司 版权所有

选择城市和中心
黑龙江省

吉林省

河北省

陕西省

湖南省

贵州省

云南省

广西省

海南省