首页 > 代码库 > TestNg之@Factory详解------如何进行参数值变化性测试

TestNg之@Factory详解------如何进行参数值变化性测试

TestNg@Factory注解从字面意思上来讲就是采用工厂的方法来创建测试数据并配合完成测试

其主要应对的场景是:对于某一个测试用例或方法,我们需要输入多个测试数据进行测试,并且这些测试数据可以是有一定关系(可以通过代码控制)

此时,我们就可以把自动化或者手动测试时遇到的只因测试数据不同的多个测试用例合并成一个测试用例,来进行更方便和快捷的测试,

对编写自动化测试代码人员节省了很多时间

策略:一般我们会在标有@Factory注解的方法中对测试类进行调用,这时TestNg会自动调用测试类中带有@Test注解的方法

java code:

/**
 * 
 * <p>
 * Title: TestngFactory
 * </p>
 * 
 * <p>
 * Description: 配置文件:testng-factory.xml
 * 
 * TestngFactory工厂类,在带有@Factory注解的方法中调用被执行的测试类,TestNg会自动调用被执行类中带有@Test注解的方法,
 * 被执行的测试类为:TestngFactoryTest,
 * </p>
 * 
 * <p>
 * Company:
 * </p>
 * 
 * @author : Dragon
 * 
 * @date : 2014年10月22日
 */
public class TestngFactory {
	@Factory
	public Object[] createInstances() {
		Object[] result = new Object[10];
		for (int i = 0; i < 10; i++) {
			result[i] = new TestngFactoryTest(i * 10);
		}
		return result;
	}
}

public class TestngFactoryTest {
	private int m_numberOfTimes;

	public TestngFactoryTest(int numberOfTimes) {
		this.m_numberOfTimes = numberOfTimes;
	}

	private static int num;

	@Test
	public void testServer() {
		num++;
		System.out.println("num    " + num + "  m_numberOfTimes :"
				+ m_numberOfTimes);
	}
}



配置文件:只需要配置带有@Factory注解的类即可

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<!-- allow-return-values 默认值为FALSE,表示返回值将被忽略 -->
<suite name="framework_testng" allow-return-values="true">
    <test verbose="2" name="TestMethods">
        <classes>
            <class name="com.dragon.testng.annotation.TestngFactory">
            </class>
        </classes>
    </test>
</suite>

测试结果:

num    1  m_numberOfTimes :30
num    2  m_numberOfTimes :20
num    3  m_numberOfTimes :70
num    4  m_numberOfTimes :60
num    5  m_numberOfTimes :90
num    6  m_numberOfTimes :50
num    7  m_numberOfTimes :10
num    8  m_numberOfTimes :0
num    9  m_numberOfTimes :40
num    10  m_numberOfTimes :80
PASSED: testServer
PASSED: testServer
PASSED: testServer
PASSED: testServer
PASSED: testServer
PASSED: testServer
PASSED: testServer
PASSED: testServer
PASSED: testServer
PASSED: testServer

===============================================
    TestMethods
    Tests run: 10, Failures: 0, Skips: 0
===============================================


TestNg的工厂测试引用@DataProvider数据源----灵活使用工厂测试


——要知道别人光鲜的背后有着太多不为人知的痛苦,自己不喜欢的人,报之以微笑,默默为他祝福;对喜欢的人,真情流露、真诚相待就好。人在做天在看,冥冥中自有因果在安排,永远怀着一颗善良的心,持续做对的事。时刻提醒自己,改变自己,低调做人,高调做事。

TestNg之@Factory详解------如何进行参数值变化性测试