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

发表于:2023-10-09 09:26

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:卟啉亮的小博客    来源:CSDN

  前言
  开发过程中,每次发布前,对于变更内容我们能做到新功能的验证,但是如果项目体量较大时,我们可能无法评估到发布变更内容对之前代码的影响。如果让测试同学全量回归所需时间较长,那么如何简化这部分内容,一键做到验证本次变更对项目的影响。一方面是自动化测试用例,另一方面就是一个合适的测试框架了。
  一、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()方法可以继续执行用例。
  总结
  通过以上内容,我们可以通过一个接口来执行某个模块,某个环境所有配置的自动化用例,并可以通过开发前端页面来展示用例的执行情况,用例执行耗时,失败用例的错误信息,重跑所有的失败用例等功能。
  本文内容不用于商业目的,如涉及知识产权问题,请权利人联系51Testing小编(021-64471599-8017),我们将立即处理
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号