0
点赞
收藏
分享

微信扫一扫

TestNG 参数化测试


文章目录

  • ​​1 项目结构​​
  • ​​2 核心代码​​
  • ​​3 自动生成xml文件​​
  • ​​4 执行结果​​


之前的文章有介绍过使用

​​Junit进行参数化测试​​,参数化测试就是一次性执行多个测试用例。本文介绍使用TestNG进行参数化测试。相比Junit,TestNG参数化测试所需要写的代码更加简洁方便。

1 项目结构

TestNG 参数化测试_参数化

2 核心代码

这里主要给出PeopleTestParameterized.java文件,其余文件在上面的文章里有。

package com.example.testng;

import org.testng.Assert;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.AfterTest;

//表示使用参数化测试的方法
//@RunWith(Parameterized.class)
public class PeopleTestParameterized {

private People param;
private double result;


@BeforeTest
public void setUp() {
//People people = new People();
}

@AfterTest
public void tearDown() {

}


@DataProvider(name = "test1")
public static Object[][] prices(){
Cap cap = new Cap(1999,0.1,0);
Jacket jacket = new Jacket(2999,0.2,1);
Trousers trousers = new Trousers(7999,0.1,1);
People p_1 = new People(cap,jacket,trousers);
double re_1 = PeopleTest.cal(cap, jacket, trousers);


cap = new Cap(19999,0.1,0);
jacket = new Jacket(29999,0.2,1);
trousers = new Trousers(79999,0.1,1);
People p_2 = new People(cap,jacket,trousers);
double re_2 = PeopleTest.cal(cap, jacket, trousers);

cap = new Cap(199,0.1,0);
jacket = new Jacket(9999,0.2,1);
trousers = new Trousers(799,0.1,1);
People p_3 = new People(cap,jacket,trousers);
double re_3 = PeopleTest.cal(cap, jacket, trousers);

cap = new Cap(2199,0.1,0);
jacket = new Jacket(49999,0.2,1);
trousers = new Trousers(6799,0.1,1);
People p_4 = new People(cap,jacket,trousers);
double re_4 = PeopleTest.cal(cap, jacket, trousers);

cap = new Cap(199,0.1,0);
jacket = new Jacket(9999,0.2,1);
trousers = new Trousers(799,0.1,1);
People p_5 = new People(cap,jacket,trousers);
double re_5 = PeopleTest.cal(cap, jacket, trousers)+1;



Object[][] re = new Object[][]{{p_1,re_1},
{p_2,re_2},
{p_3,re_3},
{p_4,re_4},
{p_5,re_5}};

return re;

}



@Test(dataProvider = "test1")
public void testprices(People p, double result) {
System.out.println(p.getAllprice()+" "+result);
Assert.assertEquals(p.getAllprice(), result);
}
}

JUnit的参数化测试需要@RunWith(Parameterized.class)声明好,创建所有测试用例,为测试用例创建好容器,写好构造函数负责将测试用例依次放入测试用例,最后执行测试代码。
相比JUnit,TestNG要更为简单,创建测试用例,编写测试代码。(其实到这里可以直接执行测试了),如果还要使用xml文件进行测试,那么可以生成一个testng.xml文件进行测试。具体生成方法如下。

点击那个Convert to TestNG

TestNG 参数化测试_单元测试_02

TestNG 参数化测试_testng_03


ok了。

再运行就好了。

TestNG 参数化测试_testng_04

3 自动生成xml文件

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd">
<suite name="Suite">
<test thread-count="5" name="Test">
<classes>
<class name="com.example.testng.PeopleTestParameterized"/>
</classes>
</test> <!-- Test -->
</suite> <!-- Suite -->

4 执行结果

TestNG 参数化测试_参数化_05


五个测试用例中故意写错一个,因此是通过四个,错误一个。


举报

相关推荐

0 条评论