测试方法中循环读取同一参数变量

本文探讨在自动化接口测试中如何通过数据驱动的自动化框架实现测试方法的复用性,减少编写重复测试代码的时间和精力。提出两种数据存储和读取思路,对比其优缺点,并最终选择了一种更简洁高效的方法,以提高测试效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

基于数据驱动的自动化框架,在我们编写测试代码时,测试方法一定要做到复用性。

 

实际工作中我们发现,不同的入参对应不同的预期结果,一般情况下,我们都会写多个测试方法应对多次入参,这样是很耗时耗力的。

 

仔细想想:测试方法中的处理逻辑是不变的,变的是入参和预期的结果。所以如果能做到一个测试方法中,循环多次读取同一个变量的入参值,就能做的测试方法的复用性,提高效率。

 

举个例子:测试方法如下,有2个入参,需要测试不同入参情况下测试方法的处理情况。我们总不能一种入参就写一个测试方法吧?那样的话,testB()、testC()....没完没了了。

 

@Test
public void testA() {
String userName;
String password;

.
.
.
//测试方法实现逻辑代码
.
.
.

assertEquals(actual,expected)

}

 

 

入参userName、password变量取自数据库,如果需要测试2次不同的入参,第一次userName=demo1,password=111111,第二次userName=demo2,password=222222,那么我们如何在数据库中存储变量,又如何在程序中处理呢?我这边有2中思路。

 

思路1:

数据库中存储形式如下

paramvalue
userNamedemo1
password111111
userNamedemo2
password222222

 

参数读取程序通过limit,顺序读取每次不同的值

 

	if(indexRow==totalRow){
	con.sql="SELECT VALUE FROM table WHERE  PARAM='"+paramName+"' limit "+startIndex+","+totalRow+";";

		}else{
			con.sql="SELECT VALUE FROM table WHERE  PARAM='"+paramName+"'  limit "+startIndex+","+endIndex+";";

		}	

 

//totalRow是同一个次数变量出现的次数,比如userName出现2次,那么totalRow=2

//startIndex是数据库开始读取的坐标

//endIndex是数据库结束读取的坐标

//indexRow是目标读取的坐标

//他们的关系是startIndex=indexRow-1;endIndex=totalRow-indexRow; 

 

测试程序通过for循环,加入循环次数

	for(int i=1;i<=totalRow;i++){
				
				String userName=DBUtil.query( "userName",i);
		    	String password=DBUtil.query( "password",i);
				}

 

这种思路的优点就是数据库显示明了(userName还是userName),当然缺点也很明显,难以区分哪个userName是第一次调用,哪个是第二次调用。

 

思路2:

数据库中存储形式如下

paramvalue
userName1demo1
password1111111
userName2demo2
password2222222

 

参数读取程序通过正常一条sql读取各自的值

con.sql="SELECT VALUE FROM table WHERE PARAM='"+paramName+"';";

 

所有的定位循环操作放在测试程序中

	for(int i=1;i<=totalRow;i++){
				
				String userName=DBUtil.query("userName"+i);
		    	String password=DBUtil.query("password"+i);
				}

 

思路2的优点很明显,程序处理简单很多,也利于识别哪次调用哪个参数。缺点就是数据库改变了变量的名称。

 

上面2中思路,在我的自动化接口测试中都有尝试,最终选择了第二种思路。一个测试方法,只关心输入数据(不限次数),无限复用,这也是数据驱动一种体现吧。

 

供大家参考。转载请注明出处,谢谢。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值