校验对象增加默认常用选择项

This commit is contained in:
liangdaliang
2025-03-19 18:16:50 +08:00
parent ef2dcdac1f
commit 4d5b02c4cf
4 changed files with 59 additions and 8 deletions

View File

@@ -280,8 +280,10 @@ public class TestCaseServiceImpl implements ITestCaseService
}
String url = "jdbc:mysql://"+ testDatasource.getHost() +":"+ testDatasource.getPort() +"/" + testDatasource.getDbName();
List<String> columnNameList = new ArrayList<>();
// sql查询特有字段结果存储
Map<String, String> sqlSpecialResultMap = new HashMap<>();
// 获取所有sql查询集合对象
List<Map<String, Object>> resultMapList = MySQLExecutor.executeQuery(testCaseStep.getSqlCommand(), url, testDatasource.getUsername(), testDatasource.getPassword(), columnNameList);
List<Map<String, Object>> resultMapList = MySQLExecutor.executeQuery(testCaseStep.getSqlCommand(), url, testDatasource.getUsername(), testDatasource.getPassword(), columnNameList, sqlSpecialResultMap);
if (!CollectionUtils.isEmpty(resultMapList)) {
SqlResult sqlResult = new SqlResult();
sqlResult.setColumnNameList(columnNameList);
@@ -293,7 +295,7 @@ public class TestCaseServiceImpl implements ITestCaseService
testCaseResult.setSqlResult(gson.toJson(sqlResult));
// 处理参数提取
Map<String, String> assignmentResultMap = new HashMap<>();
String assignmentResult = this.dealDataSourceTestCaseStepAssignment(resultMapList, assignmentResultMap, assignment);
String assignmentResult = this.dealDataSourceTestCaseStepAssignment(resultMapList, assignmentResultMap, sqlSpecialResultMap, assignment);
testCaseResult.setAssignment(assignmentResult);
// 根据提取结果处理校验规则
String assertionResult = this.dealTestCaseStepAssertion(assignmentResultMap, assertion);
@@ -522,10 +524,11 @@ public class TestCaseServiceImpl implements ITestCaseService
* 处理数据源响应字段提取
* @param resultMapList
* @param assignmentResultMap
* @param sqlSpecialResultMap 存储sql特有的响应信息字段结果值
* @param assignment
* @return 处理后的提取结果
*/
private String dealDataSourceTestCaseStepAssignment(List<Map<String, Object>> resultMapList, Map<String, String> assignmentResultMap, String assignment) {
private String dealDataSourceTestCaseStepAssignment(List<Map<String, Object>> resultMapList, Map<String, String> assignmentResultMap, Map<String, String> sqlSpecialResultMap, String assignment) {
if (!StringUtils.isEmpty(assignment) && !"[]".equals(assignment)) {
Gson gson = new Gson();
String responseBody = gson.toJson(resultMapList);
@@ -547,6 +550,20 @@ public class TestCaseServiceImpl implements ITestCaseService
String value = JMeterUtil.extractFieldValue(responseBody, path);
ruleResult.setValue(value);
}
} else if ("${RESULT_DATA_LENGTH}".equals(content)) {
if (!CollectionUtils.isEmpty(resultMapList)) {
String value = String.valueOf(resultMapList.size());
ruleResult.setValue(value);
} else {
ruleResult.setValue("0");
}
} else if ("${AFFECT_ROWS}".equals(content) || "${CHANGE_ROWS}".equals(content)) {
String affectRows = sqlSpecialResultMap.get("${AFFECT_ROWS}");
if (affectRows == null) {
ruleResult.setValue("0");
} else {
ruleResult.setValue(affectRows);
}
}
assignmentResultMap.put(rule.getName(), ruleResult.getValue());
ruleResultList.add(ruleResult);
@@ -576,6 +593,13 @@ public class TestCaseServiceImpl implements ITestCaseService
String source = rule.getSource();
String target = rule.getTarget();
String fn = rule.getFn();
if (source.equals("${RESPONSE_BODY}")) {
source = "responseBody";
} else if (source.equals("${RESPONSE_CODE}")) {
source = "responseCode";
} else if (source.equals("${RESPONSE_HEADER}")) {
source = "responseHeader";
}
String value = assignmentResultMap.get(source);
ruleResult.setValue(value);
if ("等于".equals(fn)) {