fix(接口测试): 接口覆盖率匹配算法优化
This commit is contained in:
parent
3fe052fcc2
commit
04acb0a5c3
|
@ -31,8 +31,8 @@ public class ApiDefinitionUtils {
|
||||||
if (StringUtils.isNotEmpty(customRequestUrl)) {
|
if (StringUtils.isNotEmpty(customRequestUrl)) {
|
||||||
String[] customUrlArr = customRequestUrl.split("/");
|
String[] customUrlArr = customRequestUrl.split("/");
|
||||||
|
|
||||||
if (customUrlArr.length >= urlParams.length) {
|
if (StringUtils.startsWithAny(customRequestUrl.toLowerCase(), "https://", "http://")
|
||||||
|
&& customUrlArr.length >= urlParams.length) {
|
||||||
boolean isFetch = true;
|
boolean isFetch = true;
|
||||||
for (int urlIndex = 0; urlIndex < urlParams.length; urlIndex++) {
|
for (int urlIndex = 0; urlIndex < urlParams.length; urlIndex++) {
|
||||||
String urlItem = urlParams[urlIndex];
|
String urlItem = urlParams[urlIndex];
|
||||||
|
@ -48,6 +48,23 @@ public class ApiDefinitionUtils {
|
||||||
if (isFetch) {
|
if (isFetch) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
} else if (customUrlArr.length == urlParams.length) {
|
||||||
|
boolean isFetch = true;
|
||||||
|
for (int urlIndex = 0; urlIndex < urlParams.length; urlIndex++) {
|
||||||
|
String urlItem = urlParams[urlIndex];
|
||||||
|
String customUrlItem = customUrlArr[urlIndex];
|
||||||
|
// 不为rest参数的要进行全匹配。 而且忽略大小写
|
||||||
|
if (isRestUrlParam(customUrlItem) && isRestUrlParam(urlItem)) {
|
||||||
|
if (!StringUtils.equalsIgnoreCase(customUrlItem, urlItem)) {
|
||||||
|
isFetch = false;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (isFetch) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -15,6 +15,7 @@ import io.metersphere.api.dto.scenario.ApiScenarioStepRequest;
|
||||||
import io.metersphere.api.dto.scenario.ApiScenarioUpdateRequest;
|
import io.metersphere.api.dto.scenario.ApiScenarioUpdateRequest;
|
||||||
import io.metersphere.api.mapper.ApiDefinitionMapper;
|
import io.metersphere.api.mapper.ApiDefinitionMapper;
|
||||||
import io.metersphere.api.utils.ApiDataUtils;
|
import io.metersphere.api.utils.ApiDataUtils;
|
||||||
|
import io.metersphere.api.utils.ApiDefinitionUtils;
|
||||||
import io.metersphere.project.domain.Project;
|
import io.metersphere.project.domain.Project;
|
||||||
import io.metersphere.project.mapper.ExtBaseProjectVersionMapper;
|
import io.metersphere.project.mapper.ExtBaseProjectVersionMapper;
|
||||||
import io.metersphere.project.mapper.ProjectMapper;
|
import io.metersphere.project.mapper.ProjectMapper;
|
||||||
|
@ -220,20 +221,32 @@ public class ApiCalculateTest extends BaseTest {
|
||||||
|
|
||||||
MvcResult mvcResult = this.requestGetWithOkAndReturn("/api/definition/rage/" + project.getId());
|
MvcResult mvcResult = this.requestGetWithOkAndReturn("/api/definition/rage/" + project.getId());
|
||||||
ApiCoverageDTO apiCoverageDTO = getResultData(mvcResult, ApiCoverageDTO.class);
|
ApiCoverageDTO apiCoverageDTO = getResultData(mvcResult, ApiCoverageDTO.class);
|
||||||
Assertions.assertEquals(apiCoverageDTO.getAllApiCount(), 20);
|
Assertions.assertEquals(20, apiCoverageDTO.getAllApiCount());
|
||||||
Assertions.assertEquals(apiCoverageDTO.getCoverWithApiCase(), 4);
|
Assertions.assertEquals(4, apiCoverageDTO.getCoverWithApiCase());
|
||||||
Assertions.assertEquals(apiCoverageDTO.getUnCoverWithApiCase(), 16);
|
Assertions.assertEquals(16, apiCoverageDTO.getUnCoverWithApiCase());
|
||||||
Assertions.assertEquals(apiCoverageDTO.getApiCaseCoverage(), CalculateUtils.reportPercentage(apiCoverageDTO.getCoverWithApiCase(), apiCoverageDTO.getAllApiCount()));
|
Assertions.assertEquals(apiCoverageDTO.getApiCaseCoverage(), CalculateUtils.reportPercentage(apiCoverageDTO.getCoverWithApiCase(), apiCoverageDTO.getAllApiCount()));
|
||||||
|
|
||||||
Assertions.assertEquals(apiCoverageDTO.getCoverWithApiScenario(), 8);
|
Assertions.assertEquals(8, apiCoverageDTO.getCoverWithApiScenario());
|
||||||
Assertions.assertEquals(apiCoverageDTO.getUnCoverWithApiScenario(), 12);
|
Assertions.assertEquals(12, apiCoverageDTO.getUnCoverWithApiScenario());
|
||||||
Assertions.assertEquals(apiCoverageDTO.getScenarioCoverage(), CalculateUtils.reportPercentage(apiCoverageDTO.getCoverWithApiScenario(), apiCoverageDTO.getAllApiCount()));
|
Assertions.assertEquals(apiCoverageDTO.getScenarioCoverage(), CalculateUtils.reportPercentage(apiCoverageDTO.getCoverWithApiScenario(), apiCoverageDTO.getAllApiCount()));
|
||||||
|
|
||||||
Assertions.assertEquals(apiCoverageDTO.getCoverWithApiDefinition(), 10);
|
Assertions.assertEquals(10, apiCoverageDTO.getCoverWithApiDefinition());
|
||||||
Assertions.assertEquals(apiCoverageDTO.getUnCoverWithApiDefinition(), 10);
|
Assertions.assertEquals(10, apiCoverageDTO.getUnCoverWithApiDefinition());
|
||||||
Assertions.assertEquals(apiCoverageDTO.getApiCoverage(), CalculateUtils.reportPercentage(apiCoverageDTO.getCoverWithApiDefinition(), apiCoverageDTO.getAllApiCount()));
|
Assertions.assertEquals(apiCoverageDTO.getApiCoverage(), CalculateUtils.reportPercentage(apiCoverageDTO.getCoverWithApiDefinition(), apiCoverageDTO.getAllApiCount()));
|
||||||
|
|
||||||
Assertions.assertEquals("0.00%", CalculateUtils.reportPercentage(0, 0));
|
Assertions.assertEquals("0.00%", CalculateUtils.reportPercentage(0, 0));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void urlFetchTest() {
|
||||||
|
List<String> fetchList = new ArrayList<>();
|
||||||
|
fetchList.add("/etag/{etag}");
|
||||||
|
fetchList.add("/html");
|
||||||
|
Assertions.assertFalse(ApiDefinitionUtils.isUrlInList("/brave", fetchList));
|
||||||
|
fetchList.add("https://www.abcde.com/etag/{etag}");
|
||||||
|
Assertions.assertTrue(ApiDefinitionUtils.isUrlInList("/brave", fetchList));
|
||||||
|
fetchList.remove("https://www.abcde.com/etag/{etag}");
|
||||||
|
fetchList.add("http://www.abcde.com/etag/{etag}");
|
||||||
|
Assertions.assertTrue(ApiDefinitionUtils.isUrlInList("/brave", fetchList));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue