Merge branch 'master' of https://github.com/metersphere/metersphere
This commit is contained in:
commit
0fa3c27123
|
@ -9,7 +9,9 @@ import io.metersphere.api.dto.scenario.request.RequestType;
|
|||
import io.metersphere.api.parse.MsAbstractParser;
|
||||
import io.metersphere.base.domain.ApiDefinitionWithBLOBs;
|
||||
import io.metersphere.base.domain.ApiModule;
|
||||
import io.metersphere.base.domain.ApiTestCaseWithBLOBs;
|
||||
import io.metersphere.commons.constants.ApiImportPlatform;
|
||||
import org.apache.commons.collections.CollectionUtils;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
|
||||
import java.io.InputStream;
|
||||
|
@ -55,13 +57,23 @@ public class MsDefinitionParser extends MsAbstractParser<ApiDefinitionImport> {
|
|||
|
||||
private ApiDefinitionImport parseMsFormat(String testStr, ApiTestImportRequest importRequest) {
|
||||
ApiDefinitionImport apiDefinitionImport = JSON.parseObject(testStr, ApiDefinitionImport.class);
|
||||
Map<String, List<ApiTestCaseWithBLOBs>> caseMap = new HashMap<>();
|
||||
apiDefinitionImport.getCases().forEach(item -> {
|
||||
List<ApiTestCaseWithBLOBs> caseList = caseMap.get(item.getApiDefinitionId());
|
||||
if (caseList == null) {
|
||||
caseList = new ArrayList<>();
|
||||
caseMap.put(item.getApiDefinitionId(), caseList);
|
||||
}
|
||||
caseList.add(item);
|
||||
});
|
||||
apiDefinitionImport.getData().forEach(apiDefinition -> {
|
||||
parseApiDefinition(apiDefinition, importRequest);
|
||||
parseApiDefinition(apiDefinition, importRequest, caseMap);
|
||||
});
|
||||
return apiDefinitionImport;
|
||||
}
|
||||
|
||||
private void parseApiDefinition(ApiDefinitionWithBLOBs apiDefinition, ApiTestImportRequest importRequest) {
|
||||
private void parseApiDefinition(ApiDefinitionWithBLOBs apiDefinition, ApiTestImportRequest importRequest, Map<String, List<ApiTestCaseWithBLOBs>> caseMap) {
|
||||
String originId = apiDefinition.getId();
|
||||
String id = UUID.randomUUID().toString();
|
||||
if (StringUtils.isBlank(apiDefinition.getModulePath())) {
|
||||
apiDefinition.setModuleId(null);
|
||||
|
@ -73,6 +85,19 @@ public class MsDefinitionParser extends MsAbstractParser<ApiDefinitionImport> {
|
|||
JSONObject requestObj = JSONObject.parseObject(request);
|
||||
requestObj.put("id", id);
|
||||
apiDefinition.setRequest(JSONObject.toJSONString(requestObj));
|
||||
parseCase(caseMap, apiDefinition, importRequest, originId);
|
||||
}
|
||||
|
||||
private void parseCase(Map<String, List<ApiTestCaseWithBLOBs>> caseMap, ApiDefinitionWithBLOBs apiDefinition,
|
||||
ApiTestImportRequest importRequest, String originId) {
|
||||
List<ApiTestCaseWithBLOBs> cases = caseMap.get(originId);
|
||||
if (CollectionUtils.isEmpty(cases)) {
|
||||
return;
|
||||
}
|
||||
cases.forEach(item -> {
|
||||
item.setApiDefinitionId(apiDefinition.getId());
|
||||
item.setProjectId(importRequest.getProjectId());
|
||||
});
|
||||
}
|
||||
|
||||
private void parseModule(String modulePath, ApiTestImportRequest importRequest, ApiDefinitionWithBLOBs apiDefinition) {
|
||||
|
|
|
@ -572,11 +572,18 @@ public class ApiDefinitionService {
|
|||
}
|
||||
item.setNum(num++);
|
||||
importCreate(item, batchMapper, apiTestCaseMapper, request, apiImport.getCases());
|
||||
importMsCase(apiImport, sqlSession, apiTestCaseMapper);
|
||||
if (i % 300 == 0) {
|
||||
sqlSession.flushStatements();
|
||||
}
|
||||
}
|
||||
if (!CollectionUtils.isEmpty(apiImport.getCases())) {
|
||||
for (int i = 0; i < apiImport.getCases().size(); i++) {
|
||||
importMsCase(apiImport, sqlSession, apiTestCaseMapper);
|
||||
if (i % 300 == 0) {
|
||||
sqlSession.flushStatements();
|
||||
}
|
||||
}
|
||||
}
|
||||
sqlSession.flushStatements();
|
||||
}
|
||||
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
package io.metersphere.base.mapper.ext;
|
||||
|
||||
import io.metersphere.track.dto.TestCaseReportStatusResultDTO;
|
||||
import io.metersphere.track.dto.TestCaseTestDTO;
|
||||
import io.metersphere.track.dto.TestPlanCaseDTO;
|
||||
import io.metersphere.track.request.testplancase.QueryTestPlanCaseRequest;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
@ -47,4 +48,6 @@ public interface ExtTestPlanTestCaseMapper {
|
|||
List<String> getExecResultByPlanId(String planId);
|
||||
|
||||
List<TestPlanCaseDTO> listForMinder(@Param("planId") String planId);
|
||||
|
||||
List<TestCaseTestDTO> listTestCaseTest(@Param("caseId") String caseId);
|
||||
}
|
||||
|
|
|
@ -421,6 +421,9 @@
|
|||
pc.plan_id = #{planId}
|
||||
</where>
|
||||
</select>
|
||||
<select id="listTestCaseTest" resultType="io.metersphere.track.dto.TestCaseTestDTO">
|
||||
select * from test_case_test where test_case_id = #{caseId};
|
||||
</select>
|
||||
|
||||
<update id="updateTestCaseStates" parameterType="java.lang.String">
|
||||
update test_plan_test_case
|
||||
|
|
|
@ -19,8 +19,8 @@ import org.apache.commons.collections.CollectionUtils;
|
|||
import org.apache.commons.lang3.StringUtils;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.UUID;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
public abstract class AbstractEngine implements Engine {
|
||||
protected String JMETER_IMAGE;
|
||||
|
@ -106,17 +106,20 @@ public abstract class AbstractEngine implements Engine {
|
|||
String loadConfiguration = t.getLoadConfiguration();
|
||||
JSONArray jsonArray = JSON.parseArray(loadConfiguration);
|
||||
for (int i = 0; i < jsonArray.size(); i++) {
|
||||
if (jsonArray.get(i) instanceof Map) {
|
||||
JSONObject o = jsonArray.getJSONObject(i);
|
||||
if (StringUtils.equals(o.getString("key"), "TargetLevel")) {
|
||||
s = o.getInteger("value");
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (jsonArray.get(i) instanceof List) {
|
||||
JSONArray o = jsonArray.getJSONArray(i);
|
||||
for (int j = 0; j < o.size(); j++) {
|
||||
JSONObject b = o.getJSONObject(j);
|
||||
List<JSONObject> enabledConfig = o.stream()
|
||||
.filter(b -> {
|
||||
JSONObject c = JSON.parseObject(b.toString());
|
||||
if (StringUtils.equals(c.getString("deleted"), "true")) {
|
||||
return false;
|
||||
}
|
||||
return !StringUtils.equals(c.getString("enabled"), "false");
|
||||
})
|
||||
.map(b -> JSON.parseObject(b.toString()))
|
||||
.collect(Collectors.toList());
|
||||
|
||||
for (JSONObject b : enabledConfig) {
|
||||
if (StringUtils.equals(b.getString("key"), "TargetLevel")) {
|
||||
s += b.getInteger("value");
|
||||
break;
|
||||
|
|
|
@ -0,0 +1,11 @@
|
|||
package io.metersphere.track.dto;
|
||||
|
||||
import io.metersphere.base.domain.TestCaseTest;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
public class TestCaseTestDTO extends TestCaseTest {
|
||||
private String testName;
|
||||
}
|
|
@ -3,6 +3,8 @@ package io.metersphere.track.dto;
|
|||
import io.metersphere.base.domain.TestCaseWithBLOBs;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import java.util.List;
|
||||
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
|
@ -18,4 +20,6 @@ public class TestPlanCaseDTO extends TestCaseWithBLOBs {
|
|||
private String reportId;
|
||||
private String model;
|
||||
private String projectName;
|
||||
|
||||
private List<TestCaseTestDTO> list;
|
||||
}
|
||||
|
|
|
@ -1,11 +1,8 @@
|
|||
package io.metersphere.track.service;
|
||||
|
||||
import com.github.pagehelper.PageHelper;
|
||||
import io.metersphere.base.domain.TestPlan;
|
||||
import io.metersphere.base.domain.TestPlanTestCaseExample;
|
||||
import io.metersphere.base.domain.TestPlanTestCaseWithBLOBs;
|
||||
import io.metersphere.base.domain.User;
|
||||
import io.metersphere.base.mapper.TestPlanTestCaseMapper;
|
||||
import io.metersphere.base.domain.*;
|
||||
import io.metersphere.base.mapper.*;
|
||||
import io.metersphere.base.mapper.ext.ExtTestPlanTestCaseMapper;
|
||||
import io.metersphere.commons.constants.TestPlanTestCaseStatus;
|
||||
import io.metersphere.commons.user.SessionUser;
|
||||
|
@ -14,6 +11,7 @@ import io.metersphere.commons.utils.ServiceUtils;
|
|||
import io.metersphere.commons.utils.SessionUtils;
|
||||
import io.metersphere.controller.request.member.QueryMemberRequest;
|
||||
import io.metersphere.service.UserService;
|
||||
import io.metersphere.track.dto.TestCaseTestDTO;
|
||||
import io.metersphere.track.dto.TestPlanCaseDTO;
|
||||
import io.metersphere.track.request.testcase.TestPlanCaseBatchRequest;
|
||||
import io.metersphere.track.request.testplancase.QueryTestPlanCaseRequest;
|
||||
|
@ -42,6 +40,14 @@ public class TestPlanTestCaseService {
|
|||
|
||||
@Resource
|
||||
ExtTestPlanTestCaseMapper extTestPlanTestCaseMapper;
|
||||
@Resource
|
||||
private TestCaseTestMapper testCaseTestMapper;
|
||||
@Resource
|
||||
private LoadTestMapper loadTestMapper;
|
||||
@Resource
|
||||
private ApiTestCaseMapper apiTestCaseMapper;
|
||||
@Resource
|
||||
private ApiScenarioMapper apiScenarioMapper;
|
||||
|
||||
public List<TestPlanCaseDTO> list(QueryTestPlanCaseRequest request) {
|
||||
request.setOrders(ServiceUtils.getDefaultOrder(request.getOrders()));
|
||||
|
@ -134,7 +140,40 @@ public class TestPlanTestCaseService {
|
|||
}
|
||||
|
||||
public TestPlanCaseDTO get(String testplanTestCaseId) {
|
||||
return extTestPlanTestCaseMapper.get(testplanTestCaseId);
|
||||
TestPlanCaseDTO testPlanCaseDTO = extTestPlanTestCaseMapper.get(testplanTestCaseId);
|
||||
List<TestCaseTestDTO> testCaseTestDTOS = extTestPlanTestCaseMapper.listTestCaseTest(testPlanCaseDTO.getCaseId());
|
||||
testCaseTestDTOS.forEach(dto -> {
|
||||
setTestName(dto);
|
||||
});
|
||||
testPlanCaseDTO.setList(testCaseTestDTOS);
|
||||
return testPlanCaseDTO;
|
||||
}
|
||||
|
||||
private void setTestName(TestCaseTestDTO dto) {
|
||||
String type = dto.getTestType();
|
||||
String id = dto.getTestId();
|
||||
switch (type) {
|
||||
case "performance":
|
||||
LoadTest loadTest = loadTestMapper.selectByPrimaryKey(id);
|
||||
if (loadTest != null) {
|
||||
dto.setTestName(loadTest.getName());
|
||||
}
|
||||
break;
|
||||
case "testcase":
|
||||
ApiTestCaseWithBLOBs apiTestCaseWithBLOBs = apiTestCaseMapper.selectByPrimaryKey(id);
|
||||
if (apiTestCaseWithBLOBs != null) {
|
||||
dto.setTestName(apiTestCaseWithBLOBs.getName());
|
||||
}
|
||||
break;
|
||||
case "automation":
|
||||
ApiScenarioWithBLOBs apiScenarioWithBLOBs = apiScenarioMapper.selectByPrimaryKey(id);
|
||||
if (apiScenarioWithBLOBs != null) {
|
||||
dto.setTestName(apiScenarioWithBLOBs.getName());
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
public void deleteTestCaseBath(TestPlanCaseBatchRequest request) {
|
||||
|
|
|
@ -1 +1 @@
|
|||
Subproject commit 2fb883803fa9909162ce9f6fab8a15b63af66923
|
||||
Subproject commit e20541d8c864216ebdaade01226b795efeb10c48
|
|
@ -99,7 +99,7 @@
|
|||
protocol: "",
|
||||
platforms: [
|
||||
{
|
||||
name: 'Metersphere',
|
||||
name: 'MeterSphere',
|
||||
value: 'Metersphere',
|
||||
tip: this.$t('api_test.api_import.ms_tip'),
|
||||
exportTip: this.$t('api_test.api_import.ms_export_tip'),
|
||||
|
@ -113,14 +113,14 @@
|
|||
suffixes: new Set(['json'])
|
||||
},
|
||||
{
|
||||
name: 'Jmeter',
|
||||
name: 'JMeter',
|
||||
value: 'Jmeter',
|
||||
tip: this.$t('api_test.api_import.jmeter_tip'),
|
||||
exportTip: this.$t('api_test.api_import.jmeter_export_tip'),
|
||||
suffixes: new Set(['jmx'])
|
||||
},
|
||||
{
|
||||
name: 'Har',
|
||||
name: 'HAR',
|
||||
value: 'Har',
|
||||
tip: this.$t('api_test.api_import.har_tip'),
|
||||
exportTip: this.$t('api_test.api_import.har_export_tip'),
|
||||
|
|
|
@ -128,7 +128,7 @@ export default {
|
|||
protocol: "",
|
||||
platforms: [
|
||||
{
|
||||
name: 'Metersphere',
|
||||
name: 'MeterSphere',
|
||||
value: 'Metersphere',
|
||||
tip: this.$t('api_test.api_import.ms_tip'),
|
||||
exportTip: this.$t('api_test.api_import.ms_export_tip'),
|
||||
|
@ -149,7 +149,7 @@ export default {
|
|||
suffixes: new Set(['json'])
|
||||
},
|
||||
{
|
||||
name: 'Har',
|
||||
name: 'HAR',
|
||||
value: 'Har',
|
||||
tip: this.$t('api_test.api_import.har_tip'),
|
||||
exportTip: this.$t('api_test.api_import.har_export_tip'),
|
||||
|
|
|
@ -44,12 +44,12 @@ export default {
|
|||
component: () => import('@/business/components/api/report/ApiReportView'),
|
||||
},
|
||||
{
|
||||
path: "definition",
|
||||
path: "definition/:redirectID?/:dataType?/:dataSelectRange?",
|
||||
name: "ApiDefinition",
|
||||
component: () => import('@/business/components/api/definition/ApiDefinition'),
|
||||
},
|
||||
{
|
||||
path: "automation",
|
||||
path: "automation/:redirectID?/:dataType?/:dataSelectRange?",
|
||||
name: "ApiAutomation",
|
||||
component: () => import('@/business/components/api/automation/ApiAutomation'),
|
||||
},
|
||||
|
|
|
@ -85,6 +85,15 @@
|
|||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-row>
|
||||
<el-col :offset="1">
|
||||
<span class="cast_label">关联测试:</span>
|
||||
<span v-for="(item,index) in testCase.list" :key="index">
|
||||
<el-button @click="openTest(item)" type="text" style="margin-left: 7px;">{{ item.testName }}</el-button>
|
||||
</span>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-row>
|
||||
<el-col :offset="1">
|
||||
<span class="cast_label">{{ $t('test_track.case.prerequisite') }}:</span>
|
||||
|
@ -351,7 +360,7 @@ import ApiTestDetail from "../test/ApiTestDetail";
|
|||
import ApiTestResult from "../test/ApiTestResult";
|
||||
import PerformanceTestDetail from "../test/PerformanceTestDetail";
|
||||
import PerformanceTestResult from "../test/PerformanceTestResult";
|
||||
import {listenGoBack, removeGoBackListener} from "@/common/js/utils";
|
||||
import {getUUID, listenGoBack, removeGoBackListener} from "@/common/js/utils";
|
||||
import TestCaseAttachment from "@/business/components/track/case/components/TestCaseAttachment";
|
||||
import CaseComment from "@/business/components/track/case/components/CaseComment";
|
||||
import MsPreviousNextButton from "../../../../../common/components/MsPreviousNextButton";
|
||||
|
@ -559,6 +568,29 @@ export default {
|
|||
}
|
||||
});
|
||||
},
|
||||
openTest(item) {
|
||||
const type = item.testType;
|
||||
const id = item.testId;
|
||||
switch (type) {
|
||||
case "performance": {
|
||||
let performanceData = this.$router.resolve({
|
||||
path: '/performance/test/edit/' + id,
|
||||
})
|
||||
window.open(performanceData.href, '_blank');
|
||||
break;
|
||||
}
|
||||
case "testcase": {
|
||||
let caseData = this.$router.resolve({name:'ApiDefinition',params:{redirectID:getUUID(),dataType:"apiTestCase",dataSelectRange:'single:'+id}});
|
||||
window.open(caseData.href, '_blank');
|
||||
break;
|
||||
}
|
||||
case "automation": {
|
||||
let automationData = this.$router.resolve({name:'ApiAutomation',params:{redirectID:getUUID(),dataType:"scenario",dataSelectRange:'edit:'+id}});
|
||||
window.open(automationData.href, '_blank');
|
||||
break;
|
||||
}
|
||||
}
|
||||
},
|
||||
getRelatedTest() {
|
||||
if (this.testCase.method === 'auto' && this.testCase.testId && this.testCase.testId !== 'other') {
|
||||
this.$get('/' + this.testCase.type + '/get/' + this.testCase.testId, response => {
|
||||
|
|
|
@ -327,7 +327,7 @@ export default {
|
|||
use_tip_tapd: 'Basic Auth account information is queried in "Company Management-Security and Integration-Open Platform"',
|
||||
use_tip_jira: 'Jira software server authentication information is account password, Jira software cloud authentication information is account + token (account settings-security-create API token)',
|
||||
use_tip_zentao: 'The account password is a Zentao account with corresponding permissions, and the account needs to have super model calling interface permissions',
|
||||
use_tip_two: 'After saving the Basic Auth account information, you need to manually associate the ID/key in the Metersphere project',
|
||||
use_tip_two: 'After saving the Basic Auth account information, you need to manually associate the ID/key in the MeterSphere project',
|
||||
link_the_project_now: 'Link the project now',
|
||||
cancel_edit: 'Cancel edit',
|
||||
cancel_integration: 'Cancel integration',
|
||||
|
@ -437,7 +437,7 @@ export default {
|
|||
downloadJtl: 'Download JTL',
|
||||
test_execute_again: 'Test Execute Again',
|
||||
export: 'Export',
|
||||
export_to_ms_format: 'Export to Metersphere format',
|
||||
export_to_ms_format: 'Export to MeterSphere format',
|
||||
export_to_swagger3_format: 'Export to Swagger3.0 format',
|
||||
compare: 'Compare',
|
||||
generation_error: 'Report generation error, unable to view, please check log details!',
|
||||
|
@ -809,7 +809,7 @@ export default {
|
|||
url_description: "etc: https://fit2cloud.com",
|
||||
path_description: "etc:/login",
|
||||
parameters: "Query parameters",
|
||||
jmeter_func: "Jmeter Functions",
|
||||
jmeter_func: "JMeter Functions",
|
||||
parameters_filter_example: "Example",
|
||||
parameters_filter_tips: "Only support MockJs function result preview",
|
||||
parameters_advance: "Advanced parameter settings",
|
||||
|
|
|
@ -325,7 +325,7 @@ export default {
|
|||
use_tip_tapd: 'Tapd Basic Auth 账号信息在"公司管理-安全与集成-开放平台"中查询',
|
||||
use_tip_jira: 'Jira software server 认证信息为 账号密码,Jira software cloud 认证信息为 账号+令牌(账户设置-安全-创建API令牌)',
|
||||
use_tip_zentao: '账号密码为具有相应权限的Zentao账号,账号需要具有 超级model调用接口权限',
|
||||
use_tip_two: '保存 Basic Auth 账号信息后,需要在 Metersphere 项目中手动关联 ID/key',
|
||||
use_tip_two: '保存 Basic Auth 账号信息后,需要在 MeterSphere 项目中手动关联 ID/key',
|
||||
link_the_project_now: '马上关联项目',
|
||||
cancel_edit: '取消编辑',
|
||||
cancel_integration: '取消集成',
|
||||
|
@ -435,7 +435,7 @@ export default {
|
|||
test_execute_again: '再次执行',
|
||||
downloadJtl: '下载JTL',
|
||||
export: '导出',
|
||||
export_to_ms_format: '导出 Metersphere 格式',
|
||||
export_to_ms_format: '导出 MeterSphere 格式',
|
||||
export_to_swagger3_format: '导出 Swagger3.0 格式',
|
||||
compare: '比较',
|
||||
generation_error: '报告生成错误, 无法查看, 请检查日志详情!',
|
||||
|
@ -810,7 +810,7 @@ export default {
|
|||
path_description: "例如:/login",
|
||||
url_invalid: "URL无效",
|
||||
parameters: "Query参数",
|
||||
jmeter_func: "Jmeter 方法",
|
||||
jmeter_func: "JMeter 方法",
|
||||
parameters_filter_example: "示例",
|
||||
parameters_filter_tips: "只支持 MockJs 函数结果预览",
|
||||
parameters_advance: "return",
|
||||
|
@ -946,16 +946,16 @@ export default {
|
|||
file_size_limit: "文件大小不超过 20 M",
|
||||
tip: "说明",
|
||||
export_tip: "导出方法",
|
||||
ms_tip: "支持 Metersphere json 格式",
|
||||
ms_export_tip: "通过 Metersphere 接口测试页面或者浏览器插件导出 json 格式文件",
|
||||
ms_tip: "支持 MeterSphere json 格式",
|
||||
ms_export_tip: "通过 MeterSphere 接口测试页面或者浏览器插件导出 json 格式文件",
|
||||
har_export_tip: "通过 浏览器的开发者工具 导出 Har 格式文件",
|
||||
postman_tip: "只支持 Postman Collection v2.1 格式的 json 文件",
|
||||
swagger_tip: "支持 Swagger 2.0 与 3.0 版本的 json 文件",
|
||||
har_tip: "只支持 Har 文件",
|
||||
post_export_tip: "通过 Postman 导出测试集合",
|
||||
swagger_export_tip: "通过 Swagger 页面导出",
|
||||
jmeter_export_tip: "通过 Jmeter 生成JMX文件",
|
||||
jmeter_tip: "支持 Jmeter 5.2版本的JMX 文件",
|
||||
jmeter_export_tip: "通过 JMeter 生成JMX文件",
|
||||
jmeter_tip: "支持 JMeter 5.2版本的JMX 文件",
|
||||
suffixFormatErr: "文件格式不符合要求",
|
||||
swagger_url_import: "使用URL导入",
|
||||
timing_synchronization: "定时同步",
|
||||
|
|
|
@ -325,7 +325,7 @@ export default {
|
|||
use_tip_tapd: 'Tapd Basic Auth 賬號信息在"公司管理-安全與集成-開放平臺"中查詢',
|
||||
use_tip_jira: 'Jira software server 認證信息為 賬號密碼,Jira software cloud 認證信息為 賬號+令牌(賬戶設置-安全-創建API令牌)',
|
||||
use_tip_zentao: '賬號密碼為具有相應權限的Zentao賬號,賬號需要具有 超級model調用接口權限',
|
||||
use_tip_two: '保存 Basic Auth 賬號信息後,需要在 Metersphere 項目中手動關聯 ID/key',
|
||||
use_tip_two: '保存 Basic Auth 賬號信息後,需要在 MeterSphere 項目中手動關聯 ID/key',
|
||||
link_the_project_now: '馬上關聯項目',
|
||||
cancel_edit: '取消編輯',
|
||||
cancel_integration: '取消集成',
|
||||
|
@ -435,7 +435,7 @@ export default {
|
|||
test_execute_again: '再次執行',
|
||||
downloadJtl: '下載JTL',
|
||||
export: '導出',
|
||||
export_to_ms_format: '導出 Metersphere 格式',
|
||||
export_to_ms_format: '導出 MeterSphere 格式',
|
||||
export_to_swagger3_format: '導出 Swagger3.0 格式',
|
||||
compare: '比較',
|
||||
generation_error: '報告生成錯誤, 無法查看, 請檢查日誌詳情!',
|
||||
|
@ -809,7 +809,7 @@ export default {
|
|||
path_description: "例如:/login",
|
||||
url_invalid: "URL無效",
|
||||
parameters: "Query參數",
|
||||
jmeter_func: "Jmeter 方法",
|
||||
jmeter_func: "JMeter 方法",
|
||||
parameters_filter_example: "示例",
|
||||
parameters_filter_tips: "只支持 MockJs 函數結果預覽",
|
||||
parameters_advance: "高級參數設置",
|
||||
|
@ -945,16 +945,16 @@ export default {
|
|||
file_size_limit: "文件大小不超過 20 M",
|
||||
tip: "說明",
|
||||
export_tip: "導出方法",
|
||||
ms_tip: "支持 Metersphere json 格式",
|
||||
ms_export_tip: "通過 Metersphere 接口測試頁面或者瀏覽器插件導出 json 格式文件",
|
||||
ms_tip: "支持 MeterSphere json 格式",
|
||||
ms_export_tip: "通過 MeterSphere 接口測試頁面或者瀏覽器插件導出 json 格式文件",
|
||||
har_export_tip: "通过 瀏覽器到開發者工具 导出 Har 格式文件",
|
||||
postman_tip: "只支持 Postman Collection v2.1 格式的 json 文件",
|
||||
swagger_tip: "支持 Swagger 2.0 與 3.0 版本的 json 文件",
|
||||
har_tip: "只支持 Har 文件",
|
||||
post_export_tip: "通過 Postman 導出測試集合",
|
||||
swagger_export_tip: "通過 Swagger 頁面導出",
|
||||
jmeter_export_tip: "通過 Jmeter 生成JMX文件",
|
||||
jmeter_tip: "支持 Jmeter 5.2版本的JMX 文件",
|
||||
jmeter_export_tip: "通過 JMeter 生成JMX文件",
|
||||
jmeter_tip: "支持 JMeter 5.2版本的JMX 文件",
|
||||
suffixFormatErr: "文件格式不符合要求",
|
||||
swagger_url_import: "使用URL導入",
|
||||
timing_synchronization: "定時同步",
|
||||
|
|
Loading…
Reference in New Issue