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还有一种返回迭代器的方法,下次再补充

  • 相关阅读:
    SQL Server 触发器
    [转]SQL Server 存储过程
    C#-DataView及其用法
    IEnumerable和IEnumerator 详解 And迭代器
    C#多线程学习(六) 互斥对象
    GDI简单的图片处理
    C#委托的介绍(delegate、Action、Func、predicate)
    接口的理解与使用《转》
    Mysql drop、delete和truncate的区别
    如何查看笔记本CPU是几核的?
  • 原文地址:https://www.cnblogs.com/starstarstar/p/11317864.html
Copyright © 2011-2022 走看看