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

  • 相关阅读:
    应用上架前如何知道自己应用的下载地址?
    Multi-line NSAttributedString with truncated text
    Adding AirDrop File Sharing Feature to Your iOS Apps
    Add sharing to your app via UIActivityViewController
    [原]iOS自带社会化分享框架——Social.framework
    xcode 制作静态库.a文件 详解
    Fiddler怎么对IPhone手机的数据进行抓包分析
    Mac上的抓包工具Charles
    30、准确计算CoreText高度的方法
    keil MDK中如何生成*.bin格式的文件
  • 原文地址:https://www.cnblogs.com/starstarstar/p/11317864.html
Copyright © 2020-2023  润新知