本人在使用httpclient做接口测试的过程中,使用数据库管理用例,其中存的key-value的形式,由于接口的参数可能比较多,所以一个个用例写起来会比较麻烦,所以就想了一个比较简单的方法,通过uri和textview直接向数据库中插入用例。封装完之后感觉轻松了许多,其中涉及到了遍历jsonobject和string数组还有不固定参数个数的方法,还有字符串的拼接,也算是对自己的一种锻炼吧。分享代码,供大家参考。
下面是封装好之后添加用例方法使用:
// 下面是往数据库写入用例的方法
String url ="http://testapi.app.happyjuzi.com/common/menu";
String verify_key1 ="msg";
String verify_value1 ="操作成功";
String verify_key2 ="code";
String verify_value2 ="1";
String[] verify = { verify_key1, verify_value1, verify_key2, verify_value2 };
addCaseToMySql(url, textView, verify);
添加用例的方法:
// 添加一个case到数据库中
protectedvoidaddCaseToMySql(String url, String textView, String[] verify) {
if(verify.length %2==1) {//检查数据个数
output("错误的参数个数!");
return;
}
JSONObject jsonObject = getJsonFromTextView(urlDecoderText(textView));//转化数据为jsonobject
String apiName = getApiName(url);//获取apiName
LocalMySql.getInstance().addCaseFromDate(apiName, jsonObject, verify);//插入数据库
}
网数据库里面插入数据的方法:
// 添加测试用例
publicvoidaddCaseFromDate(String apiName, JSONObject jsonObject, String[] verify) {
if(verify.length %2==1) {//检查verify个数
output("verify的参数个数错啦!");
return;
}
StringBuffer part1 =newStringBuffer();//sql语句第一部分
for(inti =1; i < jsonObject.length() +1; i++) {//获取jsonobject个数,拼接sql第一部分
String keyPart ="key"+ i;
String vaulePart ="value"+ i;
part1.append(keyPart +","+ vaulePart +",");
}
StringBuffer part2 =newStringBuffer();//sql语句第二部分
for(inti =1; i < verify.length /2+1; i++) {//获取验证字段的个数,拼接sql第二部分
String keyPart ="verify_key"+ i;
String vaulePart ="verify_value"+ i;
part2.append(keyPart +","+ vaulePart +",");// 此处末尾会出现",)"
}
StringBuffer part3 =newStringBuffer();//sql语句第三部分
Iterator keys1 = jsonObject.keys();//由于不清楚jsonobject的key类型,所以用迭代器+通配符来处理这一部分
while(keys1.hasNext()) {
String keyPart = keys1.next().toString();
String valuePart = getJsonValue(jsonObject, keyPart);
part3.append(keyPart +"','"+ valuePart +"','");
}
StringBuffer part4 =newStringBuffer();//sql语句第四部分
for(inti =; i < verify.length -1; i +=2) {//获取验证字段的名称和期望值
String key1 = verify[i];
String value1 = verify[i +1];
part4.append(key1 +"','"+ value1 +"','");// 此处末尾会出现"',')"
}
String one ="insert into api_case (api_name,status,"+ part1 + part2 +") value ('"+ apiName +"',1,'"+ part3
+ part4 +")";//拼接sql
String sql = one.replace(",')",")").replace(",)",")");//处理中间拼接时出现多余内容
getConnection();
try{
if(!connection.isClosed()) {
Statement statement = connection.createStatement();
statement.executeUpdate(sql);
connection.close();
}
}catch(SQLException e) {
outputError(e);
}
}
数据库方法重载了几次,主要是兼容一下其他格式的数据,大同小异, 这里就不贴了。
-----------------------------END---------------------------------
软件测试行业的现状:无论公司用不用自动化和性能,面试都会要求你会,所以不努力你还能走多远?
龙腾岁末给力课程揭榜了~
1、零基础学Python
周期:21课时+
上榜理由:便宜便宜还是便宜
收费详情:仅需200元押金,报自动化班的学员免费赠送
2、Python自动化测试班
周期:84课时+
上榜理由:分层自动化内容实用,接地气,不走理论派,
收费详情:网络班4000,实体班5000,推荐好友还可以更便宜
附赠大礼包:预定Python自动化班,赠送21课时Python基础课程
3、Python测试开发班
周期:112课时+
上榜理由:4个大项目实战,公司要什么我们讲什么,折扣力度大
收费详情:原价8500/9750的课程,折后仅需6800/7800
附赠大礼包:预定Python测试开发班,赠送21课时Python基础+21课时环境搭建
本文来自企鹅号 - 龙腾测试媒体
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文来自企鹅号 - 龙腾测试媒体
如有侵权,请联系 cloudcommunity@tencent.com 删除。