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;
    }
}
复制代码

运行结果:

1
2
3
4
5
6
7
年龄是: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还有一种返回迭代器的方法,下次再补充

posted @   豆芽花花儿酱  阅读(333)  评论(0编辑  收藏  举报
编辑推荐:
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
阅读排行:
· DeepSeek “源神”启动!「GitHub 热点速览」
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· DeepSeek R1 简明指南:架构、训练、本地部署及硬件要求
· 2 本地部署DeepSeek模型构建本地知识库+联网搜索详细步骤
点击右上角即可分享
微信分享提示