Merge remote-tracking branch 'origin/master'
This commit is contained in:
commit
7af4e161c4
|
@ -268,7 +268,7 @@ public class APITestController {
|
||||||
if(allCount!=0){
|
if(allCount!=0){
|
||||||
float coverageRageNumber =(float)apiCountResult.getExecutionPassCount()*100/allCount;
|
float coverageRageNumber =(float)apiCountResult.getExecutionPassCount()*100/allCount;
|
||||||
DecimalFormat df = new DecimalFormat("0.0");
|
DecimalFormat df = new DecimalFormat("0.0");
|
||||||
apiCountResult.setCoverageRage(df.format(coverageRageNumber)+"%");
|
apiCountResult.setPassRage(df.format(coverageRageNumber)+"%");
|
||||||
}
|
}
|
||||||
|
|
||||||
return apiCountResult;
|
return apiCountResult;
|
||||||
|
|
|
@ -206,35 +206,17 @@ public class MsHTTPSamplerProxy extends MsTestElement {
|
||||||
this.getRest().stream().filter(KeyValue::isEnable).filter(KeyValue::isValid).forEach(keyValue ->
|
this.getRest().stream().filter(KeyValue::isEnable).filter(KeyValue::isValid).forEach(keyValue ->
|
||||||
keyValueMap.put(keyValue.getName(), keyValue.getValue())
|
keyValueMap.put(keyValue.getName(), keyValue.getValue())
|
||||||
);
|
);
|
||||||
// 这块是否使用jmeter自身机制?
|
|
||||||
Map<String, String> pubKeyValueMap = new HashMap<>();
|
|
||||||
if (config != null && config.getVariables() != null) {
|
|
||||||
config.getVariables().stream().forEach(keyValue -> {
|
|
||||||
pubKeyValueMap.put(keyValue.getName(), keyValue.getValue());
|
|
||||||
});
|
|
||||||
}
|
|
||||||
for (String key : keyValueMap.keySet()) {
|
|
||||||
if (keyValueMap.get(key) != null && keyValueMap.get(key).startsWith("$")) {
|
|
||||||
String pubKey = keyValueMap.get(key).substring(2, keyValueMap.get(key).length() - 1);
|
|
||||||
keyValueMap.put(key, pubKeyValueMap.get(pubKey));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Pattern p = Pattern.compile("(\\{)([\\w]+)(\\})");
|
|
||||||
Matcher m = p.matcher(path);
|
|
||||||
StringBuffer sb = new StringBuffer();
|
|
||||||
try {
|
try {
|
||||||
|
Pattern p = Pattern.compile("(\\{)([\\w]+)(\\})");
|
||||||
|
Matcher m = p.matcher(path);
|
||||||
while (m.find()) {
|
while (m.find()) {
|
||||||
String group = m.group(2);
|
String group = m.group(2);
|
||||||
//替换并且把替换好的值放到sb中
|
path = path.replace("{" + group + "}", keyValueMap.get(group));
|
||||||
m.appendReplacement(sb, keyValueMap.get(group));
|
|
||||||
}
|
}
|
||||||
} catch (Exception ex) {
|
} catch (Exception ex) {
|
||||||
ex.printStackTrace();
|
ex.printStackTrace();
|
||||||
}
|
}
|
||||||
//把符合的数据追加到sb尾
|
return path;
|
||||||
m.appendTail(sb);
|
|
||||||
return sb.toString();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private String getPostQueryParameters(String path) {
|
private String getPostQueryParameters(String path) {
|
||||||
|
|
|
@ -30,9 +30,6 @@ import io.metersphere.service.ScheduleService;
|
||||||
import io.metersphere.track.dto.TestPlanDTO;
|
import io.metersphere.track.dto.TestPlanDTO;
|
||||||
import io.metersphere.track.request.testcase.ApiCaseRelevanceRequest;
|
import io.metersphere.track.request.testcase.ApiCaseRelevanceRequest;
|
||||||
import io.metersphere.track.request.testcase.QueryTestPlanRequest;
|
import io.metersphere.track.request.testcase.QueryTestPlanRequest;
|
||||||
import io.metersphere.track.request.testcase.TestPlanApiCaseBatchRequest;
|
|
||||||
import io.metersphere.track.service.TestPlanApiCaseService;
|
|
||||||
import io.metersphere.track.service.TestPlanScenarioCaseService;
|
|
||||||
import org.apache.commons.collections.CollectionUtils;
|
import org.apache.commons.collections.CollectionUtils;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.apache.ibatis.session.ExecutorType;
|
import org.apache.ibatis.session.ExecutorType;
|
||||||
|
@ -47,8 +44,6 @@ import org.springframework.web.multipart.MultipartFile;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.util.stream.Collectors;
|
|
||||||
import java.util.stream.Stream;
|
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
|
@ -343,7 +338,6 @@ public class ApiAutomationService {
|
||||||
ParameterConfig config = new ParameterConfig();
|
ParameterConfig config = new ParameterConfig();
|
||||||
config.setConfig(envConfig);
|
config.setConfig(envConfig);
|
||||||
HashTree hashTree = request.getTestElement().generateHashTree(config);
|
HashTree hashTree = request.getTestElement().generateHashTree(config);
|
||||||
request.getTestElement().getJmx(hashTree);
|
|
||||||
// 调用执行方法
|
// 调用执行方法
|
||||||
jMeterService.runDefinition(request.getId(), hashTree, request.getReportId(), ApiRunMode.SCENARIO.name());
|
jMeterService.runDefinition(request.getId(), hashTree, request.getReportId(), ApiRunMode.SCENARIO.name());
|
||||||
createAPIScenarioReportResult(request.getId(), ReportTriggerMode.MANUAL.name(), request.getExecuteType(), request.getProjectId(),
|
createAPIScenarioReportResult(request.getId(), ReportTriggerMode.MANUAL.name(), request.getExecuteType(), request.getProjectId(),
|
||||||
|
|
|
@ -50,12 +50,20 @@
|
||||||
) caseErrorCountData ON caseErrorCountData.testCaseID =testCase.testCaseID
|
) caseErrorCountData ON caseErrorCountData.testCaseID =testCase.testCaseID
|
||||||
WHERE caseErrorCountData.executeTime >= #{startTimestamp}
|
WHERE caseErrorCountData.executeTime >= #{startTimestamp}
|
||||||
UNION
|
UNION
|
||||||
SELECT scene.`name` AS caseName,testPlan.`name` AS testPlan,count(report.id) AS failureTimes,'scenario' AS caseType
|
SELECT scene.`name` AS caseName,apiScene.testPlanName AS testPlan,count(report.id) AS failureTimes,'scenario' AS caseType
|
||||||
FROM api_scenario_report report
|
FROM api_scenario_report report
|
||||||
INNER JOIN api_scenario_report_detail reportDetail ON report.id = reportDetail.report_id
|
INNER JOIN api_scenario_report_detail reportDetail ON report.id = reportDetail.report_id
|
||||||
INNER JOIN api_scenario scene ON reportDetail.content like concat('%"', scene.`name`,'"%')
|
INNER JOIN api_scenario scene ON reportDetail.content like concat('%"', scene.`name`,'"%')
|
||||||
LEFT JOIN test_plan_api_scenario apiScene ON apiScene.api_scenario_id = scene.id
|
LEFT JOIN
|
||||||
LEFT JOIN test_plan testPlan ON testPlan.id = apiScene.test_plan_id
|
(
|
||||||
|
SELECT
|
||||||
|
apiScene.api_scenario_id,
|
||||||
|
group_concat(testPlan.`name`) AS testPlanName
|
||||||
|
FROM
|
||||||
|
test_plan_api_scenario apiScene
|
||||||
|
INNER JOIN test_plan testPlan ON testPlan.id = apiScene.test_plan_id
|
||||||
|
GROUP BY apiScene.api_scenario_id
|
||||||
|
)apiScene ON apiScene.api_scenario_id = scene.id
|
||||||
WHERE report.project_id = #{projectId}
|
WHERE report.project_id = #{projectId}
|
||||||
AND report.status = 'Error' AND report.create_time >= #{startTimestamp}
|
AND report.status = 'Error' AND report.create_time >= #{startTimestamp}
|
||||||
GROUP BY scene.id
|
GROUP BY scene.id
|
||||||
|
|
|
@ -231,6 +231,7 @@
|
||||||
<select id="selectTestPlanByRelevancy" resultMap="BaseResultMap" parameterType="io.metersphere.track.request.testcase.QueryTestPlanRequest">
|
<select id="selectTestPlanByRelevancy" resultMap="BaseResultMap" parameterType="io.metersphere.track.request.testcase.QueryTestPlanRequest">
|
||||||
SELECT * FROM TEST_PLAN p LEFT JOIN test_plan_project t ON t.test_plan_id=p.id
|
SELECT * FROM TEST_PLAN p LEFT JOIN test_plan_project t ON t.test_plan_id=p.id
|
||||||
<where>
|
<where>
|
||||||
|
AND t.project_id = #{request.projectId}
|
||||||
<if test="request.scenarioId != null">
|
<if test="request.scenarioId != null">
|
||||||
AND p.id IN (SELECT test_plan_id FROM test_plan_api_scenario WHERE api_scenario_id = #{request.scenarioId} )
|
AND p.id IN (SELECT test_plan_id FROM test_plan_api_scenario WHERE api_scenario_id = #{request.scenarioId} )
|
||||||
</if>
|
</if>
|
||||||
|
|
Loading…
Reference in New Issue