开发者社区> dragonwang> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

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

简介: 在使用TestNG进行测试时,经常会使用到一些参数化配置,比如数据库、连接池、线程池数, 使用TestNG的参数@Parameter注解进行自动化读取 原创文章,版权所有,允许转载,标明出处:http://blog.csdn.net/wanghantong 使用多线程的方式运行测试代码配置: 在'<suite>'标签中配置data-provider-thread-coun
+关注继续查看

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

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

原创文章,版权所有,允许转载,标明出处:http://blog.csdn.net/wanghantong

使用多线程的方式运行测试代码配置: 在'<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>

原创文章,版权所有,允许转载,标明出处:http://blog.csdn.net/wanghantong

测试结果:

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
===============================================


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


如果我饶恕,

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


版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
TestNG学习-运行一个测试实例
TestNG学习-运行一个测试实例
0 0
软件测试面试题:如何使用TestNG+Ant创建无人值守的测试?
软件测试面试题:如何使用TestNG+Ant创建无人值守的测试?
0 0
TestNg多线程测试----平行化测试
原创文章,版权所有,允许转载,标明出处:http://blog.csdn.net/wanghantong/article/details/40394625 我们在开发过程中经常会遇到多线程的编程,比如最常见的几种情况: 1.互不通信的多线程模式 2.基于共享容器协同的多线程模式 3.通过事件协同的多线程模式  4.多进程的模式 这里我们不去详细讨论每种方式的开发方法,但是
1264 0
+关注
文章
问答
文章排行榜
最热
最新
相关电子书
更多
ICA安全标准组测试认证分享
立即下载
MaxCompute基于BigBench标准的最新测试进展
立即下载
用AI高效测试移动应用
立即下载