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

本文涉及的产品
RDS MySQL DuckDB 分析主实例,基础系列 4核8GB
RDS Agent(兼容OpenClaw),2核4GB
RDS MySQL DuckDB 分析主实例,集群系列 4核8GB
简介: 在使用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依赖详解(一)------简单的依赖(单一方法依赖)


如果我饶恕,

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


相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
目录
相关文章
|
8月前
|
Java 测试技术 数据安全/隐私保护
通过yaml文件配置自动化测试程序
通过yaml文件可以将自动化测试环境,测试数据和测试行为分开,请看一下案例
332 4
|
9月前
|
XML Ubuntu Java
如何在Ubuntu系统上安装和配置JMeter和Ant进行性能测试
进入包含 build.xml 的目录并执行:
425 13
|
运维 关系型数据库 MySQL
os-copilot安装_配置_功能测试全集
我是一位中级运维工程师,我平时工作会涉及到 各类服务器的 数据库 与 java环境配置 操作。 我顺利使用了OS Copilot的 -t -f | 功能,我的疑惑是不能在自动操作过程中直接给与脚本运行权限,必须需要自己运行一下 chmod 这个既然有了最高的权限,为什么就不能直接给与运行权限呢。 我认为 -t 功能有用,能解决后台运行基础命令操作。 我认为 -f 功能有用,可以通过task文件中撰写连续任务操作。 我认为 | 对文件理解上有很直接的解读,可以在理解新程序上有很大帮助。
468 86
|
人工智能 Ubuntu Linux
os-copilot使用之全面配置与使用测试
作为一名个人开发者,我主要从事云服务器架设工作。近期,我成功使用了OS Copilot的 `-t -f |` 功能,解决了执行语句、连续提问及快速理解文件的问题。我发现这些功能非常实用,特别是在使用Workbench时能快速调用AI助手。此外,建议将AI功能与xShell工具联动,进一步提升效率。文中详细记录了购买服务器、远程连接、安装配置OS Copilot以及具体命令测试的过程,展示了如何通过快捷键和命令行操作实现高效开发。
546 67
|
缓存 Java 测试技术
【01】噩梦终结flutter配安卓android鸿蒙harmonyOS 以及next调试环境配鸿蒙和ios真机调试环境-flutter项目安卓环境配置-gradle-agp-ndkVersion模拟器运行真机测试环境-本地环境搭建-如何快速搭建android本地运行环境-优雅草卓伊凡-很多人在这步就被难倒了
【01】噩梦终结flutter配安卓android鸿蒙harmonyOS 以及next调试环境配鸿蒙和ios真机调试环境-flutter项目安卓环境配置-gradle-agp-ndkVersion模拟器运行真机测试环境-本地环境搭建-如何快速搭建android本地运行环境-优雅草卓伊凡-很多人在这步就被难倒了
2061 3
【01】噩梦终结flutter配安卓android鸿蒙harmonyOS 以及next调试环境配鸿蒙和ios真机调试环境-flutter项目安卓环境配置-gradle-agp-ndkVersion模拟器运行真机测试环境-本地环境搭建-如何快速搭建android本地运行环境-优雅草卓伊凡-很多人在这步就被难倒了
|
数据可视化 JavaScript 前端开发
利用Postman和Apipost进行API测试的实践与优化-动态参数
在API测试中,Postman和Apipost是常用的工具。Postman内置变量功能有限,面对复杂场景时需编写JavaScript脚本,增加了维护成本。而Apipost提供丰富的内置变量、可视化动态值配置和低代码操作,支持生成真实随机数据,如邮箱、手机号等,显著提升测试效率和灵活性。对于复杂测试场景,Apipost是更好的选择,能有效降低开发与维护成本,提高测试工作的便捷性和可维护性。
|
数据可视化 JavaScript 前端开发
从Postman到Apipost:我的动态参数测试实战踩坑记
作为一名全栈开发工程师,在开发用户中心模块时,我遇到了复杂参数API测试的挑战。最初使用Postman时,发现其在生成动态参数(如邮箱、手机号和日期)时存在诸多问题,导致测试效率低下甚至出错。例如,随机生成的邮箱格式无效等 后来,CTO推荐了Apipost,它提供了更智能的参数生成方式:支持真实邮箱、符合规范的手机号以及合法日期范围,极大提升了测试效率和准确性。通过对比,Apipost在处理复杂动态参数方面明显优于Postman,减少了维护成本并提高了团队协作效率。现在,我们已全面切换到Apipost,并利用其「参数组合测试」功能发现了多个边界条件bug。
|
Dart 前端开发 Android开发
【02】写一个注册页面以及配置打包选项打包安卓apk测试—开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
【02】写一个注册页面以及配置打包选项打包安卓apk测试—开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
609 1
【02】写一个注册页面以及配置打包选项打包安卓apk测试—开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
|
弹性计算 运维 Java
OS-Copilot参数功能全面测试报告
作为一名运维工程师,我主要负责云资源的运维和管理。通过使用OS Copilot的-t/-f/管道功能,我顺利解决了环境快速搭建的问题,例如Tomcat的快速部署。具体步骤包括购买ECS服务器、配置安全组、远程登录并安装OS Copilot。使用-f参数成功安装并启动Tomcat,自动配置JDK,并通过|管道功能验证了生成内容的正确性。整个过程非常流畅,极大提升了工作效率。
237 12
|
10月前
|
Java API 微服务
为什么虚拟线程将改变Java并发编程?
为什么虚拟线程将改变Java并发编程?
444 83

热门文章

最新文章