使用TestNG框架搭建自动化测试框架

使用TestNG框架搭建自动化测试框架


前言

开发过程中,每次发布前,对于变更内容我们能做到新功能的验证,但是如果项目体量较大时,我们可能无法评估到发布变更内容对之前代码的影响。如果让测试同学全量回归所需时间较长,那么如何简化这部分内容,一键做到验证本次变更对项目的影响。一方面是自动化测试用例另一方面就是一个合适的测试框架了。


一、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.优化点

  1. (文件级别过滤)可以配置多个不同的资源文件,例如不同环境,不同租户,不同模块等。通过枚举维护资源文件的地址,根据匹配到的枚举获取到配置的资源文件列表。从文件级别去筛选。
  2. (方法级别过滤)当我们获取到所有的xmlSuite对象后,可以通过获取Test对象,Test对象中又包含了类对象信息,类对象信息中包含了方法信息,最终可以根据传入的方法名称取匹配执行哪些具体的自动化用例。
  3. 资源文件的整体结构如下
<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>

4.具体对应到Test类中,写法如下,可以获取到配置的name的值

@Parameters({"name"})
public void test(String name) {
     System.out.println(123);
}

4.TestNG切面

TestNG的切面和JAVA中的切面使用稍微有些不同,他是直接定义一个类继承IHookable接口,重写run方法。执行每一个XmlSuite中的方法时,都会先进入到这个切面中,我们可以在切面中记录方法执行的信息,方法执行的时间,以及方法执行异常捕获等。通过调用IHookCallBack.runTestMethod()方法可以继续执行用例。

总结

通过以上内容,我们可以通过一个接口来执行某个模块,某个环境所有配置的自动化用例,并可以通过开发前端页面来展示用例的执行情况用例执行耗时失败用例的错误信息重跑所有的失败用例等功能。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值