Commit 684fefc2 authored by xiongjunyi's avatar xiongjunyi

[modify:1.修改参数替换的方法,采用正则表达式匹配,更加准确

        2.修改物流用例的部分传参错误
        3.添加闪送流程用例
        4.增加调用mock接口的功能,需要在config.properties中增加mock地址
        5.调整切面类方法执行]
parent cf62b81b
......@@ -2,6 +2,7 @@ package com.miya.manning.framework.util;
import java.util.HashMap;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
......@@ -164,6 +165,34 @@ public class ParamsBuilt {
}
//post请求参数
if(params.contains(":")){
Pattern pattern = Pattern.compile("(\"varg_).*?(\")");
Matcher matcher = pattern.matcher(params);
while (matcher.find()){
String arg = matcher.group(0);
//去除可能存在的多余的反斜杠
arg = arg.replaceAll("\\\\","");
//去除双引号
arg = arg.replaceAll("\"","");
if(res_map.containsKey(arg)){
params = params.replaceAll(arg, res_map.get(arg));
}
}
Pattern pattern2 = Pattern.compile("(varg_).*?(,)");
Matcher matcher2 = pattern2.matcher(params);
while(matcher2.find()){
String arg = matcher2.group(0);
//去除可能存在的多余的反斜杠
arg = arg.replaceAll("\\\\","");
//去除逗号
arg = arg.replaceAll(",","");
if(res_map.containsKey(arg)){
params = params.replaceAll(arg, res_map.get(arg));
}
}
}
/*if(params.contains(":")){
String[] subs = params.split(",");
for(String str : subs){
String[] sub = str.split(":");
......@@ -177,7 +206,7 @@ public class ParamsBuilt {
}
}
}
}
}*/
}
}
//对于参数中的值包含运算符的,进行运算后再返回
......@@ -221,7 +250,24 @@ public class ParamsBuilt {
public static void main(String[] args) {
String a = "1.0";
Integer.parseInt(a);
String a = "{\"categoryCouponNo\":\"\",\"couponNo\":\"\",\"couponNoList\":[],\"giftGoodsForms\":[],\"goodsForms\":[{\"barcode\":\"9556135003344\",\"goodsCode\":\"111043528\",\"goodsId\":varg_data_0_records_0_goodsId,\"goodsName\":\"万宁饮用天然矿泉水600ml\",\"goodsPrice\":varg_data_0_records_0_price,\"quantity\":1.0,\"weight\":varg_data_0_weight,\"storeGoodsId\":varg_data_0_storeGoodsId,\"数据说明\":\"商品详情立即购买使用\"}],\"isHome\":TRUE,\"isCartOrder\":FALSE,\"packageOrder\":FALSE,\"spreadOrder\":FALSE,\"storeId\":1,\"receiverAddress\":\"广东省广州市荔湾区黄沙水产市场旁边黄沙码头 (1)\",\"receiverCityCode\":\"440100\",\"receiverCityName\":\"广州市\",\"receiverLat\":\"23.10601\",\"receiverLng\":\"113.239983\",\"receiverProvinceCode\":\"440000\",\"receiverProvinceName\":\"广东省\",\"receiverRegionCode\":\"440103\",\"receiverRegionName\":\"荔湾区\",\"数据说明\":\"商详立即购买使用,到家方式\"}";
Pattern pattern1 = Pattern.compile("(\"varg_).*?(\")");
Matcher matcher1 = pattern1.matcher(a);
while(matcher1.find()){
System.out.println(matcher1.group(0));
String b = matcher1.group(0);
b = b.replaceAll("\\\\","");
System.out.println(b);
}
Pattern pattern2 = Pattern.compile("(varg_).*?(,)");
Matcher matcher2 = pattern2.matcher(a);
while(matcher2.find()){
System.out.println(matcher2.group(0));
String c = matcher2.group(0);
c = c.replaceAll("\\\\","");
c = c.replaceAll(",","");
System.out.println(c);
}
}
}
......@@ -75,6 +75,11 @@ public class TestCaseUtil {
ts.setDatabasename(eachrow.getCell(11, Row.RETURN_NULL_AND_BLANK) == null ? "" : eachrow.getCell(11).toString());//设置数据库名称
ts.setScript_name(eachrow.getCell(12, Row.RETURN_NULL_AND_BLANK)== null ? "" : eachrow.getCell(12).toString());//设置脚本名称
ts.setCondition_name(eachrow.getCell(13, Row.RETURN_NULL_AND_BLANK)== null ? "" : eachrow.getCell(13).toString());//设置脚本名称
if(eachrow.getCell(14, Row.RETURN_NULL_AND_BLANK) == null || eachrow.getCell(14).toString().isEmpty()){//设置mock标志,默认为否
ts.setIs_mock("N");
}else{
ts.setIs_mock(eachrow.getCell(14).toString());
}
testCases.add(ts);
}
}
......
......@@ -61,7 +61,13 @@ public class TestUtil {
String new_params = ParamsBuilt.params_replace(params, int_var_map, string_var_map ,res_map);
logger.info("替换后的参数为:" + new_params);
//5.拼接url,调用并获取接口返回
StringBuffer url = new StringBuffer(url_start);
StringBuffer url = new StringBuffer();
if("Y".equals(testCase.getIs_mock())){//需要mock则拼接config.properties中的mock请求地址
String mock = PropertiesHandle.readValue("DadamockTestHost");
url.append(mock);
}else {
url.append(url_start);
}
StringBuilder builder = new StringBuilder();
url.append(testCase.getInterface_name());//先拼接一部分
String new_url = ParamsBuilt.params_replace(url.toString(), int_var_map, string_var_map, res_map);//替换url中可能存在的变量
......@@ -69,13 +75,14 @@ public class TestUtil {
RequestUtil.doRequest(testCase, new_params, new_url_bf, httpheadermap, logger, builder);
//6.收集响应信息,并按规则添加至map中
one_res_map = JsonTransfer.AnalysisJson(builder.toString(),one_res_map);
//7.执行检查语句,根据本次返回的接口内容来校验,和期望值相同
//本次请求变量添加到总的变量集中
res_map.putAll(one_res_map);
//7.执行检查语句,和期望值相同
String check_sql = testCase.getCheck_sql();
Assert.assertEquals(TestCaseUtil.do_check_sql(check_sql,string_var_map,int_var_map,one_res_map,databasename), true);
Assert.assertEquals(TestCaseUtil.do_check_sql(check_sql,string_var_map,int_var_map,res_map,databasename), true);
//8.校验期望值,校验本次接口返回的内容,用one_res_map来校验
String expect = testCase.getExpect();
Assert.assertEquals(TestCaseUtil.check(expect, int_var_map,string_var_map,one_res_map) , true);
//本次请求变量添加到总的变量集中
res_map.putAll(one_res_map);
}
}
......@@ -50,7 +50,13 @@ public class IFCondition implements ExcuteableCondition{
String new_params = ParamsBuilt.params_replace(params, int_var_map, string_var_map ,res_map);
logger.info("替换后的参数为:" + new_params);
//5.拼接url,调用并获取接口返回
StringBuffer url = new StringBuffer(url_start);
StringBuffer url = new StringBuffer();
if("Y".equals(testCase.getIs_mock())){//需要mock则拼接config.properties中的mock请求地址
String mock = PropertiesHandle.readValue("DadamockTestHost");
url.append(mock);
}else {
url.append(url_start);
}
StringBuilder builder = new StringBuilder();
url.append(testCase.getInterface_name());//先拼接一部分
String new_url = ParamsBuilt.params_replace(url.toString(), int_var_map, string_var_map, res_map);//替换url中可能存在的变量
......
......@@ -50,7 +50,13 @@ public class LoopCondition implements ExcuteableCondition{
String new_params = ParamsBuilt.params_replace(params, int_var_map, string_var_map ,res_map);
logger.info("替换后的参数为:" + new_params);
//5.拼接url,调用并获取接口返回
StringBuffer url = new StringBuffer(url_start);
StringBuffer url = new StringBuffer();
if("Y".equals(testCase.getIs_mock())){//需要mock则拼接config.properties中的mock请求地址
String mock = PropertiesHandle.readValue("DadamockTestHost");
url.append(mock);
}else {
url.append(url_start);
}
StringBuilder builder = new StringBuilder();
url.append(testCase.getInterface_name());//先拼接一部分
String new_url = ParamsBuilt.params_replace(url.toString(), int_var_map, string_var_map, res_map);//替换url中可能存在的变量
......
......@@ -19,6 +19,7 @@ public class TestCase {
private String script_name;//脚本名称
private String condition_name;//控制器名称
private boolean is_uploadfile;//是否是用来上传文件的用例
private String is_mock;//是否需要mock
public String getIs_excute() {
......@@ -151,6 +152,14 @@ public class TestCase {
this.is_uploadfile = is_uploadfile;
}
public String getIs_mock() {
return is_mock;
}
public void setIs_mock(String is_mock) {
this.is_mock = is_mock;
}
@Override
public String toString() {
return "TestCase{" +
......
#
saasTestHost=https://applets-dev.miyapay.com/
ssh_ip=47.97.19.30
ssh_port=40022
ssh_username=poslzk
ssh_password=miya@lizhikui
\ No newline at end of file
ssh_password=miya@lizhikui
DadamockTestHost=https://newopen.imdada.cn/
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment