TestNG入门教程-12-Java代码执行testng.xml和失败后重跑

       前面我们都在IDEA上右键testng.xml文件来运行testng用例,这个在编写测试用例过程是 可以这么做,但是,如果测试用例写完了,也是这么做吗?有没有什么方法,例如自动化去实现。测试脚本维护后期,我们都会考虑持续集成测试,那么如何把运行测试用例实现自动化呢?网上搜索,很多都是testng在cmd中输入命令行,但是这个是有缺陷的,第一需要javac命令去编译你的测试用例,然后才能用这个命令,如果用例很多,你怎么实现在cmd进行批量编译呢?这篇,我们就是来解决这个问题,不用关心TestNG环境变量和编译的事情,为将来的持续集成做好准备。

准备一个TestNG用例

package demo2;

import org.testng.Assert;
import org.testng.annotations.Test;

/**
 * create by Anthony on 2017/11/18
 */
public class ReRunFailedTestCaseDemo {

    @Test
    public void test01(){
        System.out.println("test01");
    }

    @Test(dependsOnMethods = "test03", alwaysRun = true)
    public void test02(){
        System.out.println("test02");
    }

    @Test
    public void test03(){
        Assert.assertTrue(10==11);
        System.out.println("test03");
    }

    @Test(dependsOnMethods = "test05", alwaysRun = true)
    public void test04(){
        System.out.println("test04");
    }

    @Test
    public void test05(){
        Assert.assertTrue(12==13);
        System.out.println("test05");
    }

}

       注意上面我特意写了两个运行会失败的用例,为下面的失败重跑做准备。下面我们在项目根目录下testng.xml内容如下。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPEsuiteSYSTEM"http://testng.org/testng-1.0.dtd">
<suite name="Default Suite">

    <test name="Testng_learn" >

        <classes>
            <class name="demo2.ReRunFailedTestCaseDemo"/>
        </classes>

    </test> 
</suite>

1.  如何在IDEA工具显示testng运行后的报告输出

       在IDEA这个工具上,运行完一个testng用例或者testng.xml文件默认在当前项目是没有任何testng的报告输出,这个在eclipse是默认自动打开,所以,我们先要学习下IDEA如何打开这个。

选择一个TestNG用例文件右键,然后点击Run-Edit Configuration…

运行步骤1中的testng.xml,你会发现当前项目根目录下会生成test-output文件夹

       这个文件夹下有我们上一次运行的html格式报告,还有跑失败的用例的xml文件,本文重点是testng-failed.xml文件。找到这个文件,看看是不是步骤1中我设置的两个运行失败的用例。

        在TestNG中会自动记录你上一次运行情况,在test-output下会生成html格式报告,和把失败的用例都放在testng-failed.xml,这个功能很强大。由于有了这个,我们就想,可不可以实现失败用例从新跑呢。我们手动执行testng-failed.xml当然可以去实现失败用例重新跑的需求,所以,我们重点在如何实现自动化手段去失败重新跑。把这个问题再细化,就是如何用Java代码是加载执行testng.xml文件。

2. 准备一个TestNG用例Java编程去实现运行相关testng.xml文件

       这里,我们来解决如何利用Java代码来实现运行我们想要的testng.xml文件。在testng官网教程上解释了如何java代码运行用例,但是没有介绍如何运行testng.xml。我们,写一个java类文件,第一个先执行项目根目录下的testng.xml文件,然后等执行结束,然后去执行test-output文件下testng-failed.xml文件,这样就达到了自动运行失败的用例的需求。

package demo2;

import org.testng.TestNG;
import java.util.ArrayList;
import java.util.List;

/**
 * create by Anthony on 2017/11/18
 */
public class RunTestNG {

    public static void main(String[] args) throws InterruptedException {

          TestNG testNG = new TestNG();
          List<String> suites = new ArrayList<String>();
          suites.add(".\\testng.xml");
          //suites.add(".\\test-output\\testng-failed.xml");
          testNG.setTestSuites(suites);
          testNG.run();

          // 等待执行结束,然后去执行失败用例
          TestNG testNG1 = new TestNG();
          List<String> suites1 = new ArrayList<String>();
          Thread.sleep(5000);
          suites1.add(".\\test-output\\testng-failed.xml");
          testNG1.setTestSuites(suites1);
          testNG1.run();


        }
}

看控制台运行结果:

[TestNG] Running:

 C:\Users\Administrator\IdeaProjects\Java_Learn\testng.xml

 

test01

test02

test04

 

===============================================

Default Suite

Total tests run: 5, Failures: 2, Skips: 0

===============================================

 

[TestNG] Running:

 C:\Users\Administrator\IdeaProjects\Java_Learn\test-output\testng-failed.xml

 

===============================================

Failed suite [Default Suite]

Total tests run: 2, Failures: 2, Skips: 0

===============================================

 

 

Process finished with exit code 0

       看控制台日志,显示先运行了testng.xml,然后在运行testng-failed.xml,所以,达到了我想要的目的。以上,重点是如何Java代码是实现testng.xml文件的运行用例,至于失败重跑,上面是我个人的方法,网上还有一种方法,是修改Testng监听类然后写一个重跑的方法来实现,我个人认为没有这个必要,如果后面我们介绍了监听,然后在来看看这第二个方法的实现过程,到时候我们再和这么内容对比,然后选择你认为适合你项目的失败重跑方案。

       提示:知道了如何运行一个testng.xml文件,那么就知道如何运行几百条测试用例。举例,我们有一个webui自动化项目,有几百条测试用例。一般我们都一个模块用一个testng.xml文件来进行管理或者一个testng.xml文件管理多个模块或者全量测试用例。然后写一个main方法,然执行测试的人员选择不同模块的代号,通过case语句,我们就可以实现去调用执行不同模块下的testng.xml文件,这个过程完全可以放到Jenkins上做或者cmd命令行。写过很多脚本的人,应该明白我的思路,有不明白的也没关系,慢慢去学习,去积累。




  • 6
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 11
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值