赞
踩
前言
开发过程中,每次发布前,对于变更内容我们能做到新功能的验证,但是如果项目体量较大时,我们可能无法评估到发布变更内容对之前代码的影响。如果让测试同学全量回归所需时间较长,那么如何简化这部分内容,一键做到验证本次变更对项目的影响。一方面是自动化测试用例,另一方面就是一个合适的测试框架了。
一、TestNG框架是如何执行的?
二、设计这个功能我们需要考虑的问题
1.如何去读取资源文件
- public static List<XmlSuite> getAllXmlSuites() throws IOException {
- String path = "resource文件夹中配置文件的相对路径";
- List<XmlSuite> suites = new ArrayList();
- //获取配置文件的输入流
- InputStream resourceAsStream = TestNgTest.class.getClassLoader().getResourceAsStream(path);
- //解析配置文件中的内容
- suites.addAll(new Parser(resourceAsStream).parse());
- return suites;
- }
2.执行
代码如下(示例):
- TestNG testNG = new TestNG();
- //填充获取到的用例信息
- testNG.setXmlSuites(suites);
- testNG.run();
3.优化点
(文件级别过滤)可以配置多个不同的资源文件,例如不同环境,不同租户,不同模块等。通过枚举维护资源文件的地址,根据匹配到的枚举获取到配置的资源文件列表。从文件级别去筛选。
(方法级别过滤)当我们获取到所有的xmlSuite对象后,可以通过获取Test对象,Test对象中又包含了类对象信息,类对象信息中包含了方法信息,最终可以根据传入的方法名称取匹配执行哪些具体的自动化用例。
资源文件的整体结构如下:
- <suite name="My suite" parallel="tests" thread-count="1">
- <!--为某个类传参数,指定方法可用此参数-->
- <test name="sop">
- <classes>
- <class name="com.demo.test">
- <parameter name="name" value="123"/>
- <method>
- <include name="test"/>
- </method>>
- </class>>
- </classes>
- </test>
- </suite>
具体对应到Test类中,写法如下,可以获取到配置的name的值:
- @Parameters({"name"})
- public void test(String name) {
- System.out.println(123);
- }
4.TestNG切面
TestNG的切面和JAVA中的切面使用稍微有些不同,他是直接定义一个类继承IHookable接口,重写run方法。执行每一个XmlSuite中的方法时,都会先进入到这个切面中,我们可以在切面中记录方法执行的信息,方法执行的时间,以及方法执行异常捕获等。通过调用IHookCallBack.runTestMethod()方法可以继续执行用例。
总结
通过以上内容,我们可以通过一个接口来执行某个模块,某个环境所有配置的自动化用例,并可以通过开发前端页面来展示用例的执行情况,用例执行耗时,失败用例的错误信息,重跑所有的失败用例等功能。
- 现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很多我们收集的技术文档和视频教程。
- 如果你不想再体验自学时找不到资源,没人解答问题,坚持几天便放弃的感受
- 可以加入我们一起交流。而且还有很多在自动化,性能,安全,测试开发等等方面有一定建树的技术大牛
- 分享他们的经验,还会分享很多直播讲座和技术沙龙
- 可以免费学习!划重点!开源的!!!
- qq群号:485187702【暗号:csdn11】
最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走! 希望能帮助到你!【100%无套路免费领取】
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。