zoukankan      html  css  js  c++  java
  • testng

    一、maven项目添加插件 

            <dependency>
                <groupId>org.testng</groupId>
                <artifactId>testng</artifactId>
                <version>6.14.3</version>
                <scope>compile</scope>
            </dependency>

    二、关于testng中各个组件的执行顺序 

    参考 https://blog.csdn.net/cunchi4221/article/details/107475221

    依赖:@Test(dependsOnMethods = {"你的依赖函数"})
    忽略:@Test(enable = false)

    import org.testng.Assert;
    import org.testng.annotations.*;
    
    public class TC1 {
    
        @BeforeClass
        public void beforeClass() { System.out.println("BeforeClass,开始执行一次"); }
        @AfterClass
        public void afterClass() { System.out.println("AfterClass,结束执行一次");}
    
        @BeforeMethod
        public void beforeTest() { System.out.println("BeforeMethod,每个用例前执行一次"); }
        @AfterMethod
        public void afterMethod() { System.out.println("AfterMethod,每个用例后执行一次"); }
    
        @BeforeGroups("mark")
        public void beforeGroups() { System.out.println("BeforeGroups,group前执行一次"); }
        @AfterGroups("mark")
        public void afterGroups() { System.out.println("AfterGroups,group后执行一次"); }
    
        @Test(groups = "mark", priority = 2) // 将该case 的groups标注为 mark;priority表示运行顺序
        public void case1() { Assert.assertEquals(1, 1); }
        @Test(dataProvider = "dp", priority = 1) // dataProvider 获取数据驱动
        public void case2(Integer n, String s) { System.out.println("case2:"+n+s); }
    
        @DataProvider // 做数据驱动,数据源文件可以是EXCEL,XML,甚至可以是TXT文本
        public Object[][] dp() {
            System.out.println("Inside @DataProvider");
            return new Object[][] { new Object[] { 1, "a" }, new Object[] { 2, "b" },};
        }
    }
    /*
     执行结果如下:
     BeforeClass,开始执行一次
     Inside @DataProvider
     BeforeMethod,每个用例前执行一次
     case2:1a
     AfterMethod,每个用例后执行一次
     BeforeMethod,每个用例前执行一次
     case2:2b
     AfterMethod,每个用例后执行一次
     BeforeGroups,group前执行一次
     BeforeMethod,每个用例前执行一次
     AfterMethod,每个用例后执行一次
     AfterGroups,group后执行一次
     AfterClass,结束执行一次
    
     ===============================================
     Default Suite
     Total tests run: 3, Failures: 0, Skips: 0
     ===============================================
     */

    三、关于测试套件

    上面有TC1类,补下下面xml用到的Suite类、TC2类以及TC2引用到的Utils类

    import org.testng.annotations.AfterSuite;
    import org.testng.annotations.BeforeSuite;
    
    public class Suite {
    
        @BeforeSuite
        public void suiteBefore(){
            System.out.println("测试BeforeSuite");
        }
    
        @AfterSuite
        public void suiteAfter(){
            System.out.println("测试AfterSuite");
        }
    }
    View Code
    import org.testng.Assert;
    import org.testng.annotations.DataProvider;
    import org.testng.annotations.Test;
    
    public class TC2 {
    
    
        @Test(dataProvider = "dp",groups = "1")
        public void test_add(Integer x, Integer y) {
            Utils u = new Utils();
            Assert.assertEquals(u.add(x, y), x + y);
        }
    
        @Test(dataProvider = "dp",groups = "2")
        public void test_subtract(Integer x, Integer y) {
            Utils u = new Utils();
            Assert.assertEquals(u.subtract(x, y), x - y);
        }
    
        @Test(dataProvider = "dpName")
        public void test_setName(String s) {
            Utils.setName(s);
            Assert.assertEquals(Utils.NAME, s);
        }
    
        @DataProvider
        public Object[][] dp() {
            return new Object[][] { new Object[] { 1, 1 }, new Object[] { 2, 2 }, };
        }
    
        @DataProvider
        public Object[][] dpName() {
            return new Object[][] { new Object[] { "Utils" }, new Object[] { "MyUtils" }, };
        }
    
    }
    View Code
    public class Utils {
        public static String NAME = "";
    
        public int add(int x, int y) {
            return x + y;
        }
    
        public int subtract(int x, int y) {
            return x - y;
        }
    
        public static void setName(String s) {
            System.out.println("Setting NAME to " + s);
            NAME = s;
        }
    
    }
    View Code

    下面是一个xml的测试套件,文件名不限。在xml文件上,右键run testng.xml即可,verbose参数是测试结果详细程度

    <?xml version="1.0" encoding="UTF-8"?><!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
    <suite name="TestAll">
    
        <test name="测试套件">
            <classes>
                <class name="com.example.demo.testng.Suite"/>
            </classes>
        </test>
    
    <!--    <test name="测试用例,include-包含、exclude-排除">-->
    <!--        <classes>-->
    <!--            <class name="com.example.demo.testng.TC1">-->
    <!--                <methods>-->
    <!--                    <include name="case1"/>-->
    <!--                    <exclude name="case2"/>-->
    <!--                </methods>-->
    <!--            </class>-->
    <!--        </classes>-->
    <!--    </test>-->
    
        <test name="测试group,include-包含、exclude-排除" verbose="2">
            <groups>
                <run>
                    <exclude name="1" />
                    <include name="2" />
                </run>
            </groups>
    
            <classes>
                <class name="com.example.demo.testng.TC2" />
            </classes>
        </test>
    
        <!--    <test name="测试类">-->
    <!--        <classes>-->
    <!--            <class name="com.example.demo.testng.TC1"/>-->
    <!--            <class name="com.example.demo.testng.TC2"/>-->
    <!--        </classes>-->
    <!--    </test>-->
    
    <!--    <test name="测试目录">-->
    <!--        <packages>-->
    <!--            <package name="com.example.demo.testng.*"/>-->
    <!--        </packages>-->
    <!--    </test>-->
    
    </suite>

     四、默认的测试报告

    IDEA默认不会生成报告,这里我们通过设置使用默认的报告模板来生成报告。

    设置方法:Run——Edit Configurations,再按如下截图操作。

    设置完成后,运行第三部的xml测试套件,生成的测试报告在 test-output 目录下,实际打开报告有乱码,没找到解决办法。

    (如果用浏览器打开则不会乱码,如果是从idea跳转到浏览器则会乱码,2种方式在浏览器打开的url也不同,不明白。

    如果在html报告中添加utf-8的说明,则idea跳转到浏览器也不会乱码)

     

    一个只会点点点的测试,有疑问可以在测试群(群号:330405140)问我
  • 相关阅读:
    【转载】C#使用Split函数根据特定分隔符分割字符串
    【转载】 Asp.Net安全之防止脚本入
    【转载】C#使用as关键字将对象转换为指定类型
    【转载】C#使用is关键字检查对象是否与给定类型兼容
    【转载】C#将字符串中字母全部转换为大写或者小写
    【转载】使用Response.WriteFile输出文件以及图片
    【转载】常见面试题:C#中String和string的区别分析
    【转载】Asp.Net中Cookie对象的作用以及常见属性
    【转载】C#指定文件夹下面的所有内容复制到目标文件夹下面
    【转载】Asp.Net中应用程序的事件响应次序
  • 原文地址:https://www.cnblogs.com/yinwenbin/p/15339510.html
Copyright © 2011-2022 走看看