Commit fe5924ee authored by 黎博's avatar 黎博

场景用例前置条件处理优化以及场景新增全局参数

parent 3d97b5f9
...@@ -20,6 +20,7 @@ public class Scene { ...@@ -20,6 +20,7 @@ public class Scene {
private Integer id; private Integer id;
private String name; private String name;
private Integer projectId; private Integer projectId;
private String globalParameters;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date createTime; private Date createTime;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
......
...@@ -16,5 +16,5 @@ public interface AutoUtilsService { ...@@ -16,5 +16,5 @@ public interface AutoUtilsService {
boolean assertResponse(String response, List<Map> validateList); boolean assertResponse(String response, List<Map> validateList);
Map<String, Object> handlePreCondition(String namespace, String preString); Map<String, Object> handlePreCondition(String namespace, String preString, Map<String, Object> globalMap);
} }
...@@ -154,15 +154,32 @@ public class AutoUtilsServiceImpl implements AutoUtilsService { ...@@ -154,15 +154,32 @@ public class AutoUtilsServiceImpl implements AutoUtilsService {
* @return * @return
*/ */
@Override @Override
public Map<String, Object> handlePreCondition(String namespace, String preString) { public Map<String, Object> handlePreCondition(String namespace, String preString, Map<String, Object> globalMap) {
log.info("开始处理前置动作!");
Map<String, Object> resultMap = new HashMap<>(); Map<String, Object> resultMap = new HashMap<>();
try { try {
List<Map> preList = JSON.parseArray(preString, Map.class); List<Map> preList = JSON.parseArray(preString, Map.class);
for (Map<String, Object> map: preList) { for (Map<String, Object> map: preList) {
String db = map.get("db").toString(); String db = map.get("db").toString();
String sql = map.get("sql").toString(); String sql = map.get("sql").toString();
String key = map.get("key").toString(); String key = null;
String type = map.get("type").toString(); String type = null;
if (map.get("key") != null) {
key = map.get("key").toString();
}
if (map.get("type") != null) {
type = map.get("type").toString();
}
// 确认SQL中是否需要变量替换
String regex = "(\\{\\{[A-Za-z0-9]+}})";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(sql);
while (matcher.find()) {
String replace = matcher.group();
// 去掉首位的{{和}}
String tempKey = replace.substring(2, replace.length() -2);
sql = sql.replace(replace, "'" + globalMap.get(tempKey).toString() + "'");
}
Map<String, String> params = new HashMap<>(); Map<String, String> params = new HashMap<>();
params.put("namespace", namespace); params.put("namespace", namespace);
params.put("database", db); params.put("database", db);
...@@ -179,6 +196,7 @@ public class AutoUtilsServiceImpl implements AutoUtilsService { ...@@ -179,6 +196,7 @@ public class AutoUtilsServiceImpl implements AutoUtilsService {
} }
} }
} }
log.info("前置动作获取到的值:{}", resultMap);
return resultMap; return resultMap;
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
......
...@@ -61,12 +61,16 @@ public class SceneTestcaseServiceImpl extends ServiceImpl<SceneTestcaseMapper, S ...@@ -61,12 +61,16 @@ public class SceneTestcaseServiceImpl extends ServiceImpl<SceneTestcaseMapper, S
queryWrapper.orderByAsc("sequence"); queryWrapper.orderByAsc("sequence");
List<SceneTestcase> sceneTestcaseList = sceneTestcaseMapper.selectList(queryWrapper); List<SceneTestcase> sceneTestcaseList = sceneTestcaseMapper.selectList(queryWrapper);
List<Map<String, Object>> resultList = new ArrayList<>(); List<Map<String, Object>> resultList = new ArrayList<>();
String globalParameters = sceneService.getById(sceneId).getGlobalParameters();
// 全局变量Map // 全局变量Map
Map<String, Object> globalMap = new HashMap<>(); Map<String, Object> globalMap = new HashMap<>();
if (globalParameters != null) {
globalMap.putAll(JSON.parseObject(globalParameters, Map.class));
}
for (SceneTestcase sceneTestcase: sceneTestcaseList) { for (SceneTestcase sceneTestcase: sceneTestcaseList) {
String preAction = sceneTestcase.getPreAction(); String preAction = sceneTestcase.getPreAction();
if (preAction != null && !preAction.isEmpty()) { if (preAction != null && !preAction.isEmpty()) {
Map<String, Object> preMap = autoUtilsService.handlePreCondition(namespace, preAction); Map<String, Object> preMap = autoUtilsService.handlePreCondition(namespace, preAction, globalMap);
if (preMap != null) { if (preMap != null) {
globalMap.putAll(preMap); globalMap.putAll(preMap);
} }
...@@ -163,8 +167,12 @@ public class SceneTestcaseServiceImpl extends ServiceImpl<SceneTestcaseMapper, S ...@@ -163,8 +167,12 @@ public class SceneTestcaseServiceImpl extends ServiceImpl<SceneTestcaseMapper, S
reportMap.put("headers", headersMap); reportMap.put("headers", headersMap);
reportMap.put("parameters", parameterMap); reportMap.put("parameters", parameterMap);
reportMap.put("assertResult", assertResult); reportMap.put("assertResult", assertResult);
reportMap.put("response", JSON.parseObject(response, Map.class));
reportMap.put("elapsedTime", elapsedTime); reportMap.put("elapsedTime", elapsedTime);
try {
reportMap.put("response", JSON.parseObject(response, Map.class));
} catch (Exception e) {
reportMap.put("response", response);
}
// 插入测试报告 // 插入测试报告
SceneTestcaseReport sceneTestcaseReport = new SceneTestcaseReport(); SceneTestcaseReport sceneTestcaseReport = new SceneTestcaseReport();
......
...@@ -8,6 +8,8 @@ import org.joda.time.DateTime; ...@@ -8,6 +8,8 @@ import org.joda.time.DateTime;
import java.text.DateFormat; import java.text.DateFormat;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.*; import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/** /**
* 钉钉发送消息类 * 钉钉发送消息类
...@@ -224,9 +226,21 @@ public class DingdingUtils { ...@@ -224,9 +226,21 @@ public class DingdingUtils {
// String markdown = buildMarkdownMsg("YXM-1499", "【羊小咩v7.6.00】【VCC首次交易率提升专题】巴拉巴拉", "黎博", "于巧玲", "p1", "kddsp"); // String markdown = buildMarkdownMsg("YXM-1499", "【羊小咩v7.6.00】【VCC首次交易率提升专题】巴拉巴拉", "黎博", "于巧玲", "p1", "kddsp");
// String markdown = buildPipelineMarkdownMsg("holmes", "master", "bo.li", "测试", "2021-06-03 14:59:45", "fe"); // String markdown = buildPipelineMarkdownMsg("holmes", "master", "bo.li", "测试", "2021-06-03 14:59:45", "fe");
// sendToDingding(markdown, "https://oapi.dingtalk.com/robot/send?access_token=835663338d638e40daaf3ab358af741ef0680a826a962c91bedc53b149d85ee1"); // sendToDingding(markdown, "https://oapi.dingtalk.com/robot/send?access_token=835663338d638e40daaf3ab358af741ef0680a826a962c91bedc53b149d85ee1");
String str = "2021-06-03T09:23:00Z"; // String str = "2021-06-03T09:23:00Z";
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); // SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String commitDate = simpleDateFormat.format(DateTime.parse(str).toDate()); // String commitDate = simpleDateFormat.format(DateTime.parse(str).toDate());
System.out.println(commitDate); // System.out.println(commitDate);
String model = "(\\{\\{[A-Za-z0-9]+}})";
String sql = "select * from vcc_talos.risk_record where uuid={{uuid}} and userId={{userId}}";
Pattern pattern = Pattern.compile(model);
Matcher matcher = pattern.matcher(sql);
while (matcher.find()) {
String replace = matcher.group();
// 去掉首位的{{和}}
String tempKey = replace.substring(2, replace.length() -2);
sql = sql.replace(replace, "'" + "1234" + "'");
}
System.out.println(sql);
} }
} }
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