软件测试培训
达内IT学院
400-996-5531
项目之前测试留下的UI测试框架异常简单(说的就是那个dagger),在使用上以及代码的可维护性上都存在一定问题。故而自己在原有的基础上修改,重新设计。
先抽象UI自动化代码中需要的东西:1.需要一个Driver,封装一些常见的行为,例如点击,输入,打开网页,需要支持超时,支持错误后自动截图等功能。2.需要一个断言器,快速断言节点的存在性,节点属性值,节点样式值,节点内容,节点格式,当前url等。3.需要一个处理公共行为的类,包含公共行为的方法,例如登陆等。
最终实现时,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
最终,一个用例可以变成下边这样
代码的可阅读行提高了不少。
填写下面表单即可预约申请免费试听! 怕学不会?助教全程陪读,随时解惑!担心就业?一地学习,可全国推荐就业!
Copyright © 京ICP备08000853号-56 京公网安备 11010802029508号 达内时代科技集团有限公司 版权所有
Tedu.cn All Rights Reserved