zoukankan      html  css  js  c++  java
  • TestNG-参数化

    TestNG支持参数化测试,一种是通过xml文件进行参数化,第二种就是DataProvider参数化

    1️⃣通过xml文件

    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
    <suite name="parmsuitename">
        <test name="parm">
            <!--参数-->
            <parameter name="name" value="Jack"></parameter>
            <parameter name="age" value="25"></parameter>
            <!--指定运行的类-->
            <classes>
                <class name="com.course.testng.parm.ParamterTest"></class>
            </classes>
        </test>
    </suite>

    类代码:需要两个注解,一个是@Test,标注是个测试类;另一个是@Parameters,写着传入的参数

    package com.course.testng.parm;
    import org.testng.annotations.Parameters;
    import org.testng.annotations.Test;
    
    public class ParamterTest {
        @Test
        @Parameters({"age","name"})
        public void paramTest1(int age, String name) {
            System.out.println(age + name);
        }
    }

    2️⃣通过DataProvider:Object[][]

    一、将值直接传递到方法

    package com.course.testng.parm;
    import org.testng.annotations.DataProvider;
    import org.testng.annotations.Test;
    
    public class DataProviderTest {
        @Test(dataProvider = "dataDemo")
        public void paramTestByDataProvider(String name, int age) {
            System.out.println("年龄是:" + age + ",姓名是:" + name);
        }
    
        @DataProvider(name = "dataDemo")
        public Object[][] providerData() {
            Object[][] objects = new Object[][]{
                    {"Jack", 25},
                    {"Rose", 26}
            };
            return objects;
        }
    }

    运行结果:

    年龄是:25,姓名是:Jack
    年龄是:26,姓名是:Rose
    
    ===============================================
    Default Suite
    Total tests run: 2, Failures: 0, Skips: 0
    ===============================================  

    二、通过不同的方法名,传递不同的参数值

        @Test(dataProvider = "methodDemo")
        public void methodTest1(String name, int age) {
            System.out.println("Iterator1的年龄是:" + age + ",姓名是:" + name);
        }
    
        @Test(dataProvider = "methodDemo")
        public void methodTest2(String name, int age) {
            System.out.println("Iterator222年龄是:" + age + ",姓名是:" + name);
        }
    
        @DataProvider(name = "methodDemo")
        public Object[][] methodDataTest(Method method) { //方法参数中一定要写(Method method),引入的包是:java.lang.reflect.Method
            Object[][] objects = null;
            if (method.getName().equals("methodTest1")) { //根据不同的方法名,传不同的参数值
                objects = new Object[][]{
                        {"张三呢", 23},
                        {"李四呀", 12}
                };
            } else if (method.getName().equals("methodTest2")) {
                objects = new Object[][]{
                        {"gaga", 36},
                        {"justin", 14}
                };
            }
            return objects;
        }

    根据方法名,传不同的参数

     通过DataProvider还有一种返回迭代器的方法,下次再补充

  • 相关阅读:
    [LintCode] Set Matrix Zeros
    [LintCode] Identify Celebrity
    [LintCode] Edit Distance
    [LintCode] Edit Distance II
    [LintCode] Strings Serialization
    二十七. Keepalived热备 Keepalived+LVS 、 HAProxy服务器
    二十六. 集群及LVS简介 LVS-NAT集群 LVS-DR集群
    二十五 存储技术与应用 iSCSI技术应用 、 udev配置 NFS网络文件系统 、 Multipath多路径 、 NFS网络文件系统 、 udev配置
    二十三.Subversion基本操作、使用Subversion协同工作、制作nginx的RPM包
    二十二. 安装部署Tomcat服务器、使用Tomcat部署虚拟主机、使用Varnish加速Web
  • 原文地址:https://www.cnblogs.com/starstarstar/p/11317864.html
Copyright © 2011-2022 走看看