• 代码执行testng的几种方式


    一、指定test class

    Test class FirstTest

    package cas.eric;
    
    
    import org.testng.annotations.Optional;
    import org.testng.annotations.Parameters;
    import org.testng.annotations.Test;
    
    public class FirstTest {
        @Test
        @Parameters({"name"})
        public void test_one(@Optional("zhangsan") String name){
            System.out.println("test one");
            //如果变量name有值则打印传入的name值,如果没有则打印默认值zhangsan
            System.out.println(name);
        }
    }

    执行testng的class:TestngRun

    package cas.eric;
    
    
    import org.testng.TestNG;
    import org.testng.xml.XmlClass;
    import org.testng.xml.XmlSuite;
    import org.testng.xml.XmlTest;
    
    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
    
    public class TestngRun {
    
        public static void main(String[] args) {
            //新建一个XmlSuite对象
            XmlSuite xmlSuite = new XmlSuite();
            //指定xmlsuite 名称
            xmlSuite.setName("xml test suite");
            //指定name 参数值
            Map<String,String> parameters = new HashMap<>();
            parameters.put("name", "lisi");
            //xmlsuite添加parameters
            xmlSuite.setParameters(parameters);
            //新建一个XmlTest对象
            XmlTest xmlTest = new XmlTest(xmlSuite);
            //设置xmltest 名称
            xmlTest.setName("xml test");
            //新建xmlclass 对象
            List<XmlClass> classes = new ArrayList<>();
            String packageName = TestngRun.class.getPackage().getName();
            classes.add(new XmlClass(packageName+".FirstTest"));
            xmlTest.setXmlClasses(classes);
            List<XmlSuite> suites = new ArrayList<>();
            suites.add(xmlSuite);
            TestNG testNG = new TestNG();
            testNG.setXmlSuites(suites);
            testNG.run();
        }
    
    }

    打印结果:

    test one
    lisi

    二、指定xml文件

    testng.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
    <suite name="All Test Suite">
        <test verbose="2" preserve-order="true" name="test">
            <classes>
                <class name="cas.eric.FirstTest"></class>
            </classes>
        </test>
    </suite>

    TestngRun.java

     1 package cas.eric;
     2 
     3 
     4 import org.apache.commons.io.FileUtils;
     5 import org.testng.TestNG;
     6 import java.io.File;
     7 import java.io.IOException;
     8 import java.io.InputStream;
     9 import java.util.ArrayList;
    10 import java.util.List;
    11 
    12 public class TestngRun {
    13 
    14     public static void main(String[] args) {
    15         try {
    16             String xmlName = "testng.xml";
    17             //读取文件到流
    18             InputStream inputStream = TestngRun.class.getClassLoader().getResourceAsStream(xmlName);
    19             //新建一个文件对象
    20             File xmlFile = new File("name.xml");
    21             //拷贝流的内容到新文件中
    22             FileUtils.copyInputStreamToFile(inputStream,xmlFile);
    23             TestNG testNG = new TestNG();
    24             List<String> suites = new ArrayList<>();
    25             //添加文件到suite
    26             suites.add(xmlFile.getAbsolutePath());
    27             testNG.setTestSuites(suites);
    28             testNG.run();
    29         }
    30         catch (IOException e) {
    31             e.printStackTrace();
    32         }
    33     }
    34 
    35 }

    执行结果:

    test one
    zhangsan

    打印了默认的name:zhangsan,那使用xml方式执行的时候如何传入参数呢

    三、执行xml文件以及自定义传参

    TestngRun.java

     1 package cas.eric;
     2 
     3 
     4 
     5 import org.testng.TestNG;
     6 import org.testng.xml.SuiteXmlParser;
     7 import org.testng.xml.XmlSuite;
     8 import java.io.InputStream;
     9 import java.util.ArrayList;
    10 import java.util.HashMap;
    11 import java.util.List;
    12 import java.util.Map;
    13 
    14 public class TestngRun {
    15 
    16     public static void main(String[] args) {
    17         String xmlName = "testng.xml";
    18         InputStream inputStream = TestngRun.class.getClassLoader().getResourceAsStream(xmlName);
    19         TestNG testNG = new TestNG();
    20         SuiteXmlParser suiteXmlParser = new SuiteXmlParser();
    21         List<XmlSuite> suites = new ArrayList<>();
    22         XmlSuite xmlSuite = suiteXmlParser.parse(xmlName, inputStream, true);
    23         suites.add(xmlSuite);
    24         Map<String,String> parameters = new HashMap<>();
    25         parameters.put("name", "wangwu");
    26         xmlSuite.setParameters(parameters);
    27         testNG.setXmlSuites(suites);
    28         testNG.run();
    29         
    30     }
    31 
    32 }

    执行结果:

    test one
    wangwu

    当然也可以自定义test class

    SecondTest.java

     1 package cas.eric;
     2 
     3 
     4 import org.testng.annotations.Optional;
     5 import org.testng.annotations.Parameters;
     6 import org.testng.annotations.Test;
     7 
     8 public class SecondTest {
     9 
    10     @Test
    11     @Parameters({"name"})
    12     public void test_two(@Optional("mike") String name){
    13         System.out.println("test two");
    14         //如果变量name有值则打印传入的name值,如果没有则打印默认值zhangsan
    15         System.out.println(name);
    16     }
    17 }

    TestngRun.java

     1 package cas.eric;
     2 
     3 
     4 
     5 import org.testng.TestNG;
     6 import org.testng.xml.SuiteXmlParser;
     7 import org.testng.xml.XmlClass;
     8 import org.testng.xml.XmlSuite;
     9 import org.testng.xml.XmlTest;
    10 
    11 import java.io.InputStream;
    12 import java.util.ArrayList;
    13 import java.util.HashMap;
    14 import java.util.List;
    15 import java.util.Map;
    16 
    17 public class TestngRun {
    18 
    19     public static void main(String[] args) {
    20         String xmlName = "testng.xml";
    21         InputStream inputStream = TestngRun.class.getClassLoader().getResourceAsStream(xmlName);
    22         TestNG testNG = new TestNG();
    23         SuiteXmlParser suiteXmlParser = new SuiteXmlParser();
    24         List<XmlSuite> suites = new ArrayList<>();
    25         XmlSuite xmlSuite = suiteXmlParser.parse(xmlName, inputStream, true);
    26         List<XmlTest> xmlTestList = xmlSuite.getTests();
    27         XmlTest xmlTest = xmlTestList.get(0);
    28         List<XmlClass> xmlClassList = xmlTest.getXmlClasses();
    29         String packageName = TestngRun.class.getPackage().getName();
    30         XmlClass xmlClass = new XmlClass(packageName+".SecondTest");
    31         xmlClassList.add(xmlClass);
    32         suites.add(xmlSuite);
    33         Map<String,String> parameters = new HashMap<>();
    34         parameters.put("name", "wangwu");
    35         xmlSuite.setParameters(parameters);
    36         testNG.setXmlSuites(suites);
    37         testNG.run();
    38 
    39     }
    40 
    41 }

    运行结果:

    test one
    wangwu
    test two
    wangwu

  • 相关阅读:
    Python算术运算符
    Python数据类型转换
    Linux下Tomcat启动设置debug模式启动
    FastJson之JsonObject, JsonString, JavaBean,List快速转换
    Linux 之 ./configure --prefix 命令
    JS中Ajax的同步和异步
    MySql 中 case when then else end 的用法
    Linux中CentOS6.5 64位 系统下安装docker步骤
    Linux常用命令 查找文件
    微信小程序中事件
  • 原文地址:https://www.cnblogs.com/Eric-zhao/p/11068655.html
Copyright © 2020-2023  润新知