TestNG的参数化测试、共享线程池配置、参数默认值配置

标签: testng 参数 测试 | 发表时间:2014-10-22 01:42 | 作者:wanghantong
出处:http://blog.csdn.net

在使用TestNG进行测试时,经常会使用到一些参数化配置,比如数据库、连接池、线程池数,

使用TestNG的参数@Parameter注解进行自动化读取


使用多线程的方式运行测试代码配置: 在'<suite>'标签中配置data-provider-thread-count="20"

Java代码:

/**
 * 
 * <p>
 * Title: TestngParameters
 * </p>
 * 
 * <p>
 * 参考配置文件testng-parameters.xml
 * Description:参数化测试在配置文件中配置可执行参数,使用@Parameters注解来调用, 注解中参数名称和类型必须和配置文件中一致
 * 
 * 多线程的测试:在'<suite>'标签中配置data-provider-thread-count="20"
 * </p>
 * 
 * <p>
 * Company:
 * </p>
 * 
 * @author : Dragon
 * 
 * @date : 2014年10月13日
 */
public class TestngParameters {

	// @Parameters注解内对应的参数名称和配置文件中的key必须是相同
	@Parameters({ "first-name" })
	@Test
	public void testSingleString(String secondName) {
		System.err.println("Invoked testString " + secondName);
		assert "Cedric".equals(secondName);
	}

	@Parameters({ "count" })
	@Test
	public void testSingleInteger(Integer count) {
		System.err.println("Invoked count " + count);
		assert count.intValue() == 8;
	}

	private String m_dataSource;
	private String m_jdbcDriver;
	private int poolSize;

	/**
	 * <p>
	 * description:注:@Parameters定义的参数顺序必须和方法的参数顺序一致,配置文件中的参数只是和注解的参数名称一致
	 * </p>
	 * 
	 * @param ds
	 * @param driver
	 * @param poolSize
	 */
	@Parameters({ "datasource", "jdbcDriver", "poolSize" })
	@BeforeMethod
	public void beforeTest(String ds, String driver, int poolSize) {
		this.m_dataSource = ds;
		this.m_jdbcDriver = driver;
		this.poolSize = poolSize;
		System.err.println(getM_dataSource() + " --- " + getM_jdbcDriver()
				+ " --- " + getPoolSize());
	}

	public String getM_dataSource() {
		return m_dataSource;
	}

	public String getM_jdbcDriver() {
		return m_jdbcDriver;
	}

	public int getPoolSize() {
		return poolSize;
	}

	/**
	 * 如果在配置文件中没有指定参数db,那么参数值将使用默认值'mysql'
	 * 
	 * @param db
	 */
	@Parameters("db")
	@Test
	public void testNonExistentParameter(@Optional("mysql") String db) {
		System.err.println("db ..  " + db);
	}
}

配置文件:testng-parameter.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<!-- data-provider-thread-count="20" 共享线程池配置 -->
<suite name="framework_testng" data-provider-thread-count="20">

	<parameter name="first-name" value="Cedric" />
	<parameter name="count" value="8" />
	<parameter name="datasource" value="com.dbcp.source" />
	<parameter name="jdbcDriver" value="com.mysql.jdbc.driver" />
	<parameter name="poolSize" value="10" />
	

	<test verbose="2" name="TestGroups">
		<classes>
			<class name="com.dragon.testng.annotation.TestngParameters" />
		</classes>
	</test>
</suite>
测试结果:

com.dbcp.source --- com.mysql.jdbc.driver --- 10
db ..  mysql
com.dbcp.source --- com.mysql.jdbc.driver --- 10
Invoked count 8
com.dbcp.source --- com.mysql.jdbc.driver --- 10
Invoked testString Cedric
PASSED: testNonExistentParameter("mysql")
PASSED: testSingleInteger(8)
PASSED: testSingleString("Cedric")

===============================================
    TestGroups
    Tests run: 3, Failures: 0, Skips: 0
===============================================



如果我饶恕,

别认为我没原则。因为我明白,
得饶人时且饶人,不能把事做绝了。


作者:wanghantong 发表于2014-10-21 17:42:13 原文链接
阅读:80 评论:0 查看评论

相关 [testng 参数 测试] 推荐:

TestNG的参数化测试、共享线程池配置、参数默认值配置

- - CSDN博客研发管理推荐文章
在使用TestNG进行测试时,经常会使用到一些参数化配置,比如数据库、连接池、线程池数,. 使用TestNG的参数@Parameter注解进行自动化读取. 使用多线程的方式运行测试代码配置: 在''标签中配置data-provider-thread-count="20". // @Parameters注解内对应的参数名称和配置文件中的key必须是相同.

Testng + Webdriver 入门篇

- - 研发管理 - ITeye博客
转自:http://www.cnblogs.com/GGHHLL/archive/2013/06/07/3124121.html. 断断续续摸索了几个星期终于将这个入门篇成文了. 从Testng 官网 http://testng.org/ 都能找到这些资料. 首先安装Eclipse 的Testng 插件:这里 .

JUnit4与TestNG对比

- - 编程语言 - ITeye博客
最近构建自动化测试,用webdriver+ant+junit3,发现用例的运行顺序无法保证,具有相关性的功能只好写在一个用例中,网上资料说junit4可以控制用例执行顺序,还没实际操作过,今天发现一篇TestNG与Junit4对比的文章,对我们的自动化测试很有帮助,记录在此,以待后续研究. 原文链接:http://blog.sina.com.cn/s/blog_4592b96f0101gi73.html.

MySQL timeout相关参数解析和测试

- - cenalulu's Tech Blog
MySQL中有两个关于连接超时的配置项:. wait_timeout和 interactive_timeout. 他们之间在某些条件下会互相继承,那究竟这两个参数会在什么情况下起作用呢. 本文将会通过一些测试实例来证明总结两者的相互关系. Before MySQL 5.1.41, this timeout applies only to TCP/IP connections, not to connections made through Unix socket files, named pipes, or shared memory.

JMeter 压力测试使用函数和 CSV 文件参数化 json 数据

- - CSDN博客架构设计推荐文章
        在 http Load Testing 中,json 数据的提交是个让人头疼的问题. 本文详细介绍如何进行 JMeter 的 json 测试提交,以及如何将其参数化.         Step 1 http json 请求采样器的录制.         这个工具很多,可以使用 JMeter 代理录制,也可以使用 Badboy.

linux、mysql、nginx、tomcat 环境下压力测试的主要调试参数

- - SegmentFault 最新的文章
一、linux 系统内核参数. /etc/sysctl.conf文件常用参数. net.core.netdev_max_backlog = 32768 #允许送到队列的数据包的最大数目 net.core.rmem_max = 8388608. #SOCKET读缓存区大小 net.core.wmem_max = 8388608.

Kafka参数影响及性能测试_tom_fans的博客-CSDN博客

- -
Kafka提供了2个测试脚本,kafka-producer-perf-test.sh以及kafka-consumer-perf-test.sh,  kafka参数非常多,有些使用默认即可,有些对性能影响极大,只有经过测试,你才能够对这些参数有直观的感觉. 下面我们先测试producer.. 先看看producer脚本怎么使用:.

测试

- 香姜 - 韩寒
测试......>>点击查看新浪博客原文.

JMETER 参数化

- - 开源软件 - ITeye博客
用Jmeter中的函数获取参数值,__Random,__threadNum,__CSVRead,__StringFromFile. 2.用户定义的变量 “配置元件”->“用户定义的变量”. 从csv文件中读取“配置元件”->“CSV Data Set Config”. 调用方法${id_g1} ${id_g2} ${id_g3}.

Eclipse.ini参数分析

- - CSDN博客推荐文章
         我只修改过一次eclipse.ini文件,是因为myeclipse使用出了问题:编辑jsp页面的时候写java代码,只要用到自带的关联提示(例如String.,只要敲击“.”就会卡死). 后来同事说可以试着修改eclipse.ini文件,把内存改大一点也许就行了,结果改了N次几乎到1G了还是没解决.