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数据源----灵活使用工厂测试

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

时间: 2024-10-09 20:04:35

TestNg之@Factory详解------如何进行参数值变化性测试的相关文章

testNG xml文件详解

网上看到一篇整理的非常详细的xml文件详解,分享一下: 1 <?xml version="1.0" encoding="UTF-8"?> 2 <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd"> 3 <!--suite(测试套件)为根路径,仅允许出现1次,是多个test(测试用例)的集合,以下为各属性含义及取值 4 @name 必填,标记suite的名称

testNG 使用功能详解

TestSuite处理测试用例有6个规约(否则会被拒绝执行测试) A 测试用例必须是公有类(Public) B 测试用例必须继承与TestCase类 C 测试用例的测试方法必须是公有的( Public ) D 测试用例的测试方法必须被声明为Void E 测试用例中测试方法的前置名词必须是test F 测试用例中测试方法误任何传递参数 执行TestNg有几种方式:命令行.Eclipse/IntelliJ.ant等.第一种: 直接执行,右键要执行的方法,点Run As ->TestNG Test第二

定位页面元素之xpath详解以及定位不到测试元素的常见问题

一.定位元素的方法 id:首选的识别属性,W3C标准推荐为页面每一个元素设置一个独一无二的ID属性, 如果没有且很难找到唯一属性,解决方法:(1)找开发把id或者name加上.如果不行,解决思路可以是: 1. 找到该按钮的特征,例如按钮的文字是 submit: 2. 用XPath定位,可以这样写://button[@value='submit'].(注意是单引号!!) name:和id一致 ClassName:对某些具有相同类的元素一网打尽的好方法 link text 和 partial lin

testng使用详解

一.testng 介绍 TestNG 是一个测试框架,其灵感来自 JUnit 和 NUnit,但同时引入了一些新的功能,使其功能更强大,使用更方便. TestNG 设计涵盖所有类型的测试:单元,功能,端到端,集成等,它需要 JDK5 或更高的 JDK 版本. 详细使用说明请参考官方链接:https://testng.org/doc/index.html 在 maven 中引入依赖: <dependency> <groupId>org.testng</groupId> &

软工——详解白盒测试

软件测试,是一个容易被遗忘的过程.人们都看到了软件开发的美好,却忽视了软件测试的重要性. 软件测试目的:发现程序中的错误. 为了发现程序的错误,测试用例的制定也是非常重要的.只有尽可能用较少的测试用例,检测出程序的错误. 软件测试计划的制定: 之前学习软件工程的时候,白盒测试中的覆盖不太清楚.在复习软考的过程中,又重新看了一遍软工.终于明白各种覆盖,究竟是什么意思了.接下来请看详解. 对于软件的测试,是在软件开发的全部生命过程中.只是不同阶段,测试的重心和测试方法不同而已. 计划何时制定: 计划

.NET DLL 保护措施详解(五)常规条件下的破解

为了证实在常规手段破解下能有效保护程序核心功能(演示版本对AES加解密算法及数据库的密钥(一段字符串)进行了保护),特对此DLL保护思路进行相应的测试,包含了反编译及反射测试,看是否能得到AES加解密算法的密钥及数据库字符串. 反编译: 我这里使用了.net dll反编译工具ILSpy,以下为真实截图. 1. NetProtect.BLLDemo.dll 2. NetProtect.ConsoleApplication1.exe 3. NetProtect.CoreClr.dll 综合上图,可以

ping, tracert和traceroute命令详解

ping命令详解 使 用 ping可以测试计算机名和计算机的 ip 地址,验证与远程计算机的连接,通过将 icmp 回显数据包发送到计算机并侦听回显回复数据包来验证与一台或多台远程计算机的连接,该命令只有在安装了 tcp/ip 协议后才可以使用. 现在打开你的ms-dos(开始→程序→ms-dos),用win2000的朋友打开cmd.exe(这是win2000下的ms-dos,开始→程序→ 附件→"命令提示符" 或 开始→搜索文件或文件夹→"填入cmd.exe",找

TestNG详解-深度好文

转自: https://blog.csdn.net/lykangjia/article/details/56485295 TestNG详解-深度好文 2017年02月22日 14:51:52 阅读数:8609 1. 介绍    TestNG是一个设计用来简化广泛的测试需求的测试框架,从单元测试(隔离测试一个类)到集成测试(测试由有多个类多个包甚至多个外部框架组成的整个系统,例如运用服务器). 编写一个测试的过程有三个典型步骤: * 编写测试的 业务逻辑并在代码中插入TestNG annotati

TestNg依赖详解(一)------简单的依赖(单一方法依赖)

TestNg依赖测试之简单方法依赖,通过dependsOnMethods属性来配置依赖方法 Java code: /** * * <p> * Title: TestngDependencies * </p> * * <p> * Description: Testng提供了两种依赖实现 * * 1.强制依赖:某个测试用例之前需要执行的依赖链中如果有一个失败,那么接下来所有的测试都不会被执行 * 2.顺序依赖(软依赖):顺序依赖的用处更多是用来检测一个测试链是否按照正确的顺