zoukankan      html  css  js  c++  java
  • 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:UsersAdministratorIdeaProjectsJava_Learn estng.xml

     

    test01

    test02

    test04

     

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

    Default Suite

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

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

     

    [TestNG] Running:

     C:UsersAdministratorIdeaProjectsJava_Learn est-output estng-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命令行。写过很多脚本的人,应该明白我的思路,有不明白的也没关系,慢慢去学习,去积累。


    原文链接:https://blog.csdn.net/u011541946/article/details/78597258

  • 相关阅读:
    火狐插件火狐黑客插件将Firefox变成黑客工具的七个插件
    memcache安装环境:WINDOWS 7
    PHP正则表达式
    968. 监控二叉树 力扣(困难) dfs 官方说DP
    375. 猜数字大小 II 力扣(中等) 区间动态规划、记忆化搜索
    629. K个逆序对数组 力扣(困难) 区间动态规划
    剑指 Offer 51. 数组中的逆序对 力扣(困难) 巧用归并排序算法
    488. 祖玛游戏 力扣(困难) dfs
    16. 最接近的三数之和 力扣(中等) 双指针
    319. 灯泡开关 力扣(中等) 数论
  • 原文地址:https://www.cnblogs.com/peachh/p/12071113.html
Copyright © 2011-2022 走看看