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

之前说过@Factory更适合于同一类型的參数变化性的測试,那么假设參数值没有特定的规律时,我们能够採用@Factory和@DataProvider相结合的方式进行測试

注意要点:请注意測试方法将被一共运行的次数。由于@Factory本身就属于循环測试的类型。@DataProvider也是属于測试总体循环的类型

Java code:

/**
 *
 * <p>
 * Title: TestngFactoryDataProvider
 * </p>
 *
 * <p>
 * 配置文件:testng-factoryDataProvider.xml
 *
 * Description:
 * 使用@DataProvider作为数据注入的方式,向Factory中注入数据,并运行測试,被运行的測试类:TestngFactoryTest
 * </p>
 *
 * <p>
 * Company:
 * </p>
 *
 * @author : Dragon
 *
 * @date : 2014年10月22日
 */
public class TestngFactoryDataProvider {
	@Factory(dataProvider = "datasource")
	public Object[] createInstances(int a) {
		System.out.println(a);
		Object[] result = new Object[a];
		for (int i = 0; i < a; i++) {
			result[i] = new TestngFactoryTest(i * 10);
		}
		return result;
	}

	@DataProvider(name = "datasource")
	public Object[][] getDatasource() {
		return new Object[][] { new Object[] { 2 }, new Object[] { 4 } };
	}
}
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);
	}
}

配置文件:

<?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.TestngFactoryDataProvider">
			</class>
		</classes>
	</test>
</suite>

測试结果:

num    1  m_numberOfTimes :20
num    2  m_numberOfTimes :10
num    3  m_numberOfTimes :0
num    4  m_numberOfTimes :30
num    5  m_numberOfTimes :10
num    6  m_numberOfTimes :0
PASSED: testServer
PASSED: testServer
PASSED: testServer
PASSED: testServer
PASSED: testServer
PASSED: testServer

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

假设我厚道,

别觉得我笨拙。

由于我明确,

厚德能载物,助人能快乐。

时间: 2024-08-19 11:02:09

TestNg的工厂測试引用@DataProvider数据源----灵活使用工厂測试的相关文章

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

之前说过@Factory更适合于同一类型的参数变化性的测试,那么如果参数值没有特定的规律时,我们可以采用@Factory和@DataProvider相结合的方式进行测试 注意要点:请注意测试方法将被一共执行的次数,因为@Factory本身就属于循环测试的类型,@DataProvider也是属于测试整体循环的类型 Java code: /** * * <p> * Title: TestngFactoryDataProvider * </p> * * <p> * 配置文件:

【金阳光測试】大话Android自己主动化測试--Android自己主动化系列(1)--金阳光于2013年4月份

Android自己主动化測试框架和工具在四年多的发展日趋成熟. 从五年前的第一代自己主动化架构演进到眼下第四代(本系列讲座第7篇后将具体剖析第三代和第四代自己主动化框架)从曾经最早谷歌推崇的monkey随机測试工具到点触流自己主动化工具monkeyrunner.MonkeyTalk.基于元素识别的自己主动化框架sikuli.seeTest.iTest.基于控件识别的Robotium.SL4A.这三种技术各有千秋.基本上如今做出的自己主动化框架都是整合或者改动了以上这些免费的自己主动化框架:比方中

设计模式之_简单工厂模式、工厂方法模式、抽象工厂模式 、策略模式、策略与工厂的区别(转)

一.前言 话说十年前,有一个爆发户,他家有三辆汽车(Benz(奔驰).Bmw(宝马).Audi(奥迪)),还雇了司机为他开车.不过,爆发户坐车时总是这样:上Benz车后跟司机说“开奔驰车!”,坐上Bmw后他说“开宝马车!”,坐上 Audi后他说“开奥迪车!”.你一定说:这人有病!直接说开车不就行了?!而当把这个爆发户的行为放到我们程序语言中来,我们发现C语言一直是通过这种方式来坐车的 幸运的是这种有病的现象在OO语言中可以避免了.下面以Java语言为基础来引入我们本文的主题:工厂模式! 二.简介

万事俱备只缺数据?看看如何在策略中引用外部数据源

?虽然真格量化提供了大量的行情数据,但金融市场如此广大,总会有一些标的的行情或经济数据我们尚未提供.与其坐等数据"从天而降"或自己手工上传,用户可以灵活运用各种数据API来快速获取这些外部数据. 比如我们想做原油的内外盘套利,需要监控原油的内外盘价差,比如上海国际能源交易中心INE原油和CME WTI原油的价差.我们知道有一些可以通过网页调用的免费的外盘行情源,可以提供WTI原油价格和人民币美元汇率. 我们在OnStart部分可以先定义外部行情源网址: 比如,我们的外部行情格式是这样的

spring+springMVC+Mybatis架构下采用AbstractRoutingDataSource、atomikos、JTA实现多数据源灵活切换以及分布式事务管理

背景: 1.系统采用SSM架构.需要在10多个MYSQL数据库之间进行切换并对数据进行操作,上篇博文<springMVC+Mybatis(使用AbstractRoutingDataSource实现多数据源切换时)事务管理未生效的解决办法> 2.第一步先通过AbstractRoutingDataSource实现了多数据源的灵活切换,但是后来发现事务不起作用: 3.发现问题是因为重复扫描service包导致第二次扫入容器的BEAN没有纳入事务管理,因此在springMVC的配置文件中排除了对Ser

2,抽象工厂模式(Abstract Factory Pattern) 抽象工厂可以一下生产一个产品族(里面有很多产品组成)

备注    工厂模式:要么生产香蕉.要么生产苹果.要么生产西红柿:但是不能同时生产一个产品组. 抽象工厂:能同时生产一个产品族.===>抽象工厂存在原因 解释 :    具体工厂在开闭原则下,                能生产香蕉/苹果/梨子;  (产品等级结构) 抽象工厂:在开闭原则下,               能生产:南方香蕉/苹果/梨子 (产品族)  北方香蕉/苹果/梨子 重要区别:              工厂模式只能生产一个产品.(要么香蕉.要么苹果)            

Asp.Net 设计模式 之 “工厂方法”即利用 接口 实现的抽象工厂

主要改动部分: /// <summary>    /// 6.创建工厂方法模式(抽象工厂:接口)    /// </summary>    interface IFactory    //父接口(父类工厂)    {        /// <summary>        /// 此父接口提供一个无参的函数方法        /// </summary>        /// <returns></returns>        Op

设计模式--简单工厂模式之在springboot中使用简单工厂模式

1.前言: 不了解简单工厂模式请先移步:在商城中使用简单工厂.在这里主要是对springboot中使用简单工厂模式进行解析. 2.问题: 什么是简单工厂:它的实现方式是由一个工厂类根据传入的参数,动态决定应该创建哪一个产品类(这些产品类继承自一个父类或接口)的实例. 然而在Spring中,在启动容器对时候会通过beanFactory先创建初始化我们要用的类. 一个是要在使用的时候去创建一个产品类,一个是预先已经加载好了我们要使用的对象,那我们要如何解决这个问题呢? 3.场景:在一个商城系统中,用

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

TestNg的 @Factory注解从字面意思上来讲就是采用工厂的方法来创建测试数据并配合完成测试 其主要应对的场景是:对于某一个测试用例或方法,我们需要输入多个测试数据进行测试,并且这些测试数据可以是有一定关系(可以通过代码控制), 此时,我们就可以把自动化或者手动测试时的遇到的只因测试数据不同的多个测试用例合并成一个测试用例,来进行更方便和快捷的测试, 对编写自动化测试代码人员节省了很多时间 策略:一般我们会在标有@Factory注解的方法中对测试类进行调用,这时TestNg会自动调用测试类