mirror of
https://gitee.com/fit2cloud-feizhiyun/MeterSphere.git
synced 2024-12-03 04:28:51 +08:00
feat(测试跟踪): 用例导出支持选择字段
--story=1008224 --user=陈建星 用例导出/导入支持自定义字段 https://www.tapd.cn/55049933/s/1225482
This commit is contained in:
parent
fe2c26cf14
commit
dee57844ae
@ -61,4 +61,8 @@ public enum TestCaseImportFiled {
|
||||
}
|
||||
return tags;
|
||||
}
|
||||
|
||||
public boolean containsHead(String head) {
|
||||
return filedLangMap.values().contains(head);
|
||||
}
|
||||
}
|
||||
|
@ -0,0 +1,62 @@
|
||||
package io.metersphere.excel.converter;
|
||||
|
||||
import io.metersphere.commons.constants.TestCaseCommentType;
|
||||
import io.metersphere.commons.constants.TestPlanTestCaseStatus;
|
||||
import io.metersphere.commons.constants.TestReviewCaseStatus;
|
||||
import io.metersphere.commons.utils.CommonBeanFactory;
|
||||
import io.metersphere.commons.utils.DateUtils;
|
||||
import io.metersphere.i18n.Translator;
|
||||
import io.metersphere.track.dto.TestCaseCommentDTO;
|
||||
import io.metersphere.track.dto.TestCaseDTO;
|
||||
import io.metersphere.track.service.TestCaseCommentService;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
|
||||
public class TestCaseExportCommendConverter implements TestCaseExportConverter {
|
||||
|
||||
private HashMap<String, String> commendTypeMap = new HashMap<>();
|
||||
private HashMap<String, String> planCaseStatusMap = new HashMap<>();
|
||||
private HashMap<String, String> reviewCaseStatusMap = new HashMap<>();
|
||||
|
||||
public TestCaseExportCommendConverter() {
|
||||
commendTypeMap.put(TestCaseCommentType.CASE.name(), "test_case_comment");
|
||||
commendTypeMap.put(TestCaseCommentType.PLAN.name(), "test_case_plan_comment");
|
||||
commendTypeMap.put(TestCaseCommentType.REVIEW.name(), "test_case_review_comment");
|
||||
|
||||
planCaseStatusMap.put(TestPlanTestCaseStatus.Pass.name(), "execute_pass");
|
||||
planCaseStatusMap.put(TestPlanTestCaseStatus.Underway.name(), "test_case_status_prepare");
|
||||
planCaseStatusMap.put(TestPlanTestCaseStatus.Blocking.name(), "plan_case_status_blocking");
|
||||
planCaseStatusMap.put(TestPlanTestCaseStatus.Failure.name(), "test_case_status_error");
|
||||
planCaseStatusMap.put(TestPlanTestCaseStatus.Skip.name(), "plan_case_status_skip");
|
||||
|
||||
reviewCaseStatusMap.put(TestReviewCaseStatus.Prepare.name(), "test_case_status_prepare");
|
||||
reviewCaseStatusMap.put(TestReviewCaseStatus.Pass.name(), "execute_pass");
|
||||
reviewCaseStatusMap.put(TestReviewCaseStatus.UnPass.name(), "execute_not_pass");
|
||||
}
|
||||
|
||||
@Override
|
||||
public String parse(TestCaseDTO testCase) {
|
||||
TestCaseCommentService testCaseCommentService = CommonBeanFactory.getBean(TestCaseCommentService.class);
|
||||
List<TestCaseCommentDTO> caseComments = testCaseCommentService.getCaseComments(testCase.getId());
|
||||
StringBuilder result = new StringBuilder();
|
||||
String template = Translator.get("test_case_comment_template");
|
||||
caseComments.forEach(comment -> {
|
||||
String authorName = comment.getAuthorName();
|
||||
String type = getFromMapOfNullableWithTranslate(commendTypeMap, comment.getType());
|
||||
String status = "";
|
||||
if (StringUtils.equals(comment.getType(), TestCaseCommentType.PLAN.name())) {
|
||||
status = getFromMapOfNullableWithTranslate(planCaseStatusMap, comment.getStatus());
|
||||
status = "[".concat(status).concat("]");
|
||||
} else if (StringUtils.equals(comment.getType(), TestCaseCommentType.REVIEW.name())) {
|
||||
status = getFromMapOfNullableWithTranslate(reviewCaseStatusMap, comment.getStatus());
|
||||
status = "[".concat(status).concat("]");
|
||||
}
|
||||
String updateTime = DateUtils.getTimeString(comment.getUpdateTime());
|
||||
String description = comment.getDescription();
|
||||
result.append(String.format(template, authorName, type, status, updateTime, description));
|
||||
});
|
||||
return result.toString();
|
||||
}
|
||||
}
|
@ -0,0 +1,31 @@
|
||||
package io.metersphere.excel.converter;
|
||||
|
||||
import io.metersphere.i18n.Translator;
|
||||
import io.metersphere.track.dto.TestCaseDTO;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* 功能用例导出时解析其他字段对应的列
|
||||
* @author jianxing
|
||||
*/
|
||||
public interface TestCaseExportConverter {
|
||||
|
||||
String parse(TestCaseDTO testCase);
|
||||
|
||||
default String getFromMapOfNullable(Map<String, String> map, String key) {
|
||||
if (StringUtils.isNotBlank(key)) {
|
||||
return map.get(key);
|
||||
}
|
||||
return "";
|
||||
}
|
||||
|
||||
default String getFromMapOfNullableWithTranslate(Map<String, String> map, String key) {
|
||||
String value = getFromMapOfNullable(map, key);
|
||||
if (StringUtils.isNotBlank(value)) {
|
||||
return Translator.get(value);
|
||||
}
|
||||
return value;
|
||||
}
|
||||
}
|
@ -0,0 +1,51 @@
|
||||
package io.metersphere.excel.converter;
|
||||
|
||||
import io.metersphere.commons.utils.LogUtil;
|
||||
import io.metersphere.track.constants.TestCaseExportOtherField;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
public class TestCaseExportConverterFactory {
|
||||
|
||||
public static Map<String, TestCaseExportConverter> getConverters(List<String> keys) {
|
||||
Map<String, TestCaseExportConverter> converterMapResult = new HashMap<>();
|
||||
try {
|
||||
HashMap<String, Class<? extends TestCaseExportConverter>> converterMap = getConverterMap();
|
||||
for (String key : keys) {
|
||||
Class<? extends TestCaseExportConverter> clazz = converterMap.get(key);
|
||||
if (clazz != null) {
|
||||
converterMapResult.put(key, clazz.getDeclaredConstructor().newInstance());
|
||||
}
|
||||
}
|
||||
} catch (Exception e) {
|
||||
LogUtil.error(e);
|
||||
}
|
||||
return converterMapResult;
|
||||
}
|
||||
|
||||
public static TestCaseExportConverter getConverter(String key) {
|
||||
try {
|
||||
Class<? extends TestCaseExportConverter> clazz = getConverterMap().get(key);
|
||||
if (clazz != null) {
|
||||
return clazz.getDeclaredConstructor().newInstance();
|
||||
}
|
||||
} catch (Exception e) {
|
||||
LogUtil.error(e);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
private static HashMap<String, Class<? extends TestCaseExportConverter>> getConverterMap() {
|
||||
return new HashMap<>() {{
|
||||
put(TestCaseExportOtherField.VERSION.getValue(), TestCaseExportVersionConverter.class);
|
||||
put(TestCaseExportOtherField.COMMEND.getValue(), TestCaseExportCommendConverter.class);
|
||||
put(TestCaseExportOtherField.EXECUTE_RESULT.getValue(), TestCaseExportExecuteResultConverter.class);
|
||||
put(TestCaseExportOtherField.REVIEW_RESULT.getValue(), TestCaseExportReviewResultConverter.class);
|
||||
put(TestCaseExportOtherField.CREATOR.getValue(), TestCaseExportCreatorConverter.class);
|
||||
put(TestCaseExportOtherField.CREATE_TIME.getValue(), TestCaseExportCreateTimeConverter.class);
|
||||
put(TestCaseExportOtherField.UPDATE_TIME.getValue(), TestCaseExportUpdateTimeConverter.class);
|
||||
}};
|
||||
}
|
||||
}
|
@ -0,0 +1,12 @@
|
||||
package io.metersphere.excel.converter;
|
||||
|
||||
import io.metersphere.commons.utils.DateUtils;
|
||||
import io.metersphere.track.dto.TestCaseDTO;
|
||||
|
||||
public class TestCaseExportCreateTimeConverter implements TestCaseExportConverter {
|
||||
|
||||
@Override
|
||||
public String parse(TestCaseDTO testCase) {
|
||||
return DateUtils.getTimeString(testCase.getCreateTime());
|
||||
}
|
||||
}
|
@ -0,0 +1,27 @@
|
||||
package io.metersphere.excel.converter;
|
||||
|
||||
import io.metersphere.base.domain.User;
|
||||
import io.metersphere.commons.utils.CommonBeanFactory;
|
||||
import io.metersphere.commons.utils.SessionUtils;
|
||||
import io.metersphere.service.UserService;
|
||||
import io.metersphere.track.dto.TestCaseDTO;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
public class TestCaseExportCreatorConverter implements TestCaseExportConverter {
|
||||
|
||||
private Map<String, String> userMap = new HashMap<>();
|
||||
|
||||
public TestCaseExportCreatorConverter() {
|
||||
UserService userService = CommonBeanFactory.getBean(UserService.class);
|
||||
List<User> memberOption = userService.getProjectMemberOption(SessionUtils.getCurrentProjectId());
|
||||
memberOption.forEach(option -> userMap.put(option.getId(), option.getName()));
|
||||
}
|
||||
|
||||
@Override
|
||||
public String parse(TestCaseDTO testCase) {
|
||||
return getFromMapOfNullable(userMap, testCase.getCreateUser());
|
||||
}
|
||||
}
|
@ -0,0 +1,25 @@
|
||||
package io.metersphere.excel.converter;
|
||||
|
||||
import io.metersphere.commons.constants.TestPlanTestCaseStatus;
|
||||
import io.metersphere.track.dto.TestCaseDTO;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
public class TestCaseExportExecuteResultConverter implements TestCaseExportConverter {
|
||||
|
||||
private Map<String, String> planCaseStatusMap = new HashMap<>();
|
||||
|
||||
public TestCaseExportExecuteResultConverter() {
|
||||
planCaseStatusMap.put(TestPlanTestCaseStatus.Pass.name(), "execute_pass");
|
||||
planCaseStatusMap.put(TestPlanTestCaseStatus.Underway.name(), "test_case_status_prepare");
|
||||
planCaseStatusMap.put(TestPlanTestCaseStatus.Blocking.name(), "plan_case_status_blocking");
|
||||
planCaseStatusMap.put(TestPlanTestCaseStatus.Failure.name(), "test_case_status_error");
|
||||
planCaseStatusMap.put(TestPlanTestCaseStatus.Skip.name(), "plan_case_status_skip");
|
||||
}
|
||||
|
||||
@Override
|
||||
public String parse(TestCaseDTO testCase) {
|
||||
return getFromMapOfNullableWithTranslate(planCaseStatusMap, testCase.getLastExecuteResult());
|
||||
}
|
||||
}
|
@ -0,0 +1,23 @@
|
||||
package io.metersphere.excel.converter;
|
||||
|
||||
import io.metersphere.commons.constants.TestReviewCaseStatus;
|
||||
import io.metersphere.track.dto.TestCaseDTO;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
public class TestCaseExportReviewResultConverter implements TestCaseExportConverter {
|
||||
|
||||
private Map<String, String> reviewCaseStatusMap = new HashMap<>();
|
||||
|
||||
public TestCaseExportReviewResultConverter() {
|
||||
reviewCaseStatusMap.put(TestReviewCaseStatus.Prepare.name(), "test_case_status_prepare");
|
||||
reviewCaseStatusMap.put(TestReviewCaseStatus.Pass.name(), "execute_pass");
|
||||
reviewCaseStatusMap.put(TestReviewCaseStatus.UnPass.name(), "execute_not_pass");
|
||||
}
|
||||
|
||||
@Override
|
||||
public String parse(TestCaseDTO testCase) {
|
||||
return getFromMapOfNullableWithTranslate(reviewCaseStatusMap, testCase.getReviewStatus());
|
||||
}
|
||||
}
|
@ -0,0 +1,12 @@
|
||||
package io.metersphere.excel.converter;
|
||||
|
||||
import io.metersphere.commons.utils.DateUtils;
|
||||
import io.metersphere.track.dto.TestCaseDTO;
|
||||
|
||||
public class TestCaseExportUpdateTimeConverter implements TestCaseExportConverter {
|
||||
|
||||
@Override
|
||||
public String parse(TestCaseDTO testCase) {
|
||||
return DateUtils.getTimeString(testCase.getUpdateTime());
|
||||
}
|
||||
}
|
@ -0,0 +1,27 @@
|
||||
package io.metersphere.excel.converter;
|
||||
|
||||
import io.metersphere.commons.utils.CommonBeanFactory;
|
||||
import io.metersphere.commons.utils.SessionUtils;
|
||||
import io.metersphere.dto.ProjectVersionDTO;
|
||||
import io.metersphere.service.ProjectVersionService;
|
||||
import io.metersphere.track.dto.TestCaseDTO;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
public class TestCaseExportVersionConverter implements TestCaseExportConverter {
|
||||
|
||||
private Map<String, String> versionMap = new HashMap<>();
|
||||
|
||||
public TestCaseExportVersionConverter() {
|
||||
ProjectVersionService projectVersionService = CommonBeanFactory.getBean(ProjectVersionService.class);
|
||||
List<ProjectVersionDTO> projectVersions = projectVersionService.getProjectVersions(SessionUtils.getCurrentProjectId());
|
||||
projectVersions.forEach(i -> versionMap.put(i.getId(), i.getName()));
|
||||
}
|
||||
|
||||
@Override
|
||||
public String parse(TestCaseDTO testCase) {
|
||||
return getFromMapOfNullable(versionMap, testCase.getVersionId());
|
||||
}
|
||||
}
|
@ -54,6 +54,8 @@ public class TestCaseExcelData {
|
||||
List<String> mergeStepDesc;
|
||||
@ExcelIgnore
|
||||
List<String> mergeStepResult;
|
||||
@ExcelIgnore
|
||||
Map<String, String> otherFields;
|
||||
|
||||
public List<List<String>> getHead(boolean needNum, List<CustomFieldDao> customFields) {
|
||||
return new ArrayList<>();
|
||||
|
@ -24,9 +24,9 @@ public class FunctionCaseMergeWriteHandler implements RowWriteHandler {
|
||||
for (int i = 0; i < headList.size(); i++) {
|
||||
List<String> list = headList.get(i);
|
||||
for (String head : list) {
|
||||
if (TestCaseImportFiled.STEP_DESC.getFiledLangMap().values().contains(head)) {
|
||||
if (TestCaseImportFiled.STEP_DESC.containsHead(head)) {
|
||||
stepDescRowIndex = i;
|
||||
} else if (TestCaseImportFiled.STEP_RESULT.getFiledLangMap().values().contains(head)) {
|
||||
} else if (TestCaseImportFiled.STEP_RESULT.containsHead(head)) {
|
||||
stepResultRowIndex = i;
|
||||
}
|
||||
}
|
||||
|
@ -1,37 +1,45 @@
|
||||
package io.metersphere.excel.handler;
|
||||
|
||||
import com.alibaba.excel.util.BooleanUtils;
|
||||
import com.alibaba.excel.write.handler.RowWriteHandler;
|
||||
import com.alibaba.excel.write.handler.context.RowWriteHandlerContext;
|
||||
import com.alibaba.excel.write.metadata.holder.WriteSheetHolder;
|
||||
import com.alibaba.excel.write.metadata.holder.WriteTableHolder;
|
||||
import com.alibaba.excel.write.style.row.AbstractRowHeightStyleStrategy;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import io.metersphere.excel.constants.TestCaseImportFiled;
|
||||
import io.metersphere.i18n.Translator;
|
||||
import org.apache.commons.collections.CollectionUtils;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.apache.poi.ss.usermodel.Comment;
|
||||
import org.apache.poi.ss.usermodel.Drawing;
|
||||
import org.apache.poi.ss.usermodel.Row;
|
||||
import org.apache.poi.ss.usermodel.Sheet;
|
||||
import org.apache.poi.xssf.usermodel.XSSFClientAnchor;
|
||||
import org.apache.poi.xssf.usermodel.XSSFRichTextString;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @author song.tianyang
|
||||
* @Date 2021/5/7 2:17 下午
|
||||
* @Description
|
||||
*/
|
||||
public class FunctionCaseTemplateWriteHandler extends AbstractRowHeightStyleStrategy {
|
||||
public class FunctionCaseTemplateWriteHandler implements RowWriteHandler {
|
||||
|
||||
private boolean isNeedId;
|
||||
Map<String, Integer> rowDispseIndexMap;
|
||||
Map<String, Integer> rowDisposeIndexMap;
|
||||
Map<String, List<String>> caseLevelAndStatusValueMap;
|
||||
|
||||
private Integer idIndex;
|
||||
private Integer moduleIndex;
|
||||
private Integer maintainerIndex;
|
||||
private Integer priorityIndex;
|
||||
private Integer tagIndex;
|
||||
private Integer statusIndex;
|
||||
private Integer stepModelIndex;
|
||||
|
||||
public FunctionCaseTemplateWriteHandler(boolean isNeedId, List<List<String>> headList, Map<String, List<String>> caseLevelAndStatusValueMap) {
|
||||
this.isNeedId = isNeedId;
|
||||
rowDispseIndexMap = this.buildFiledMap(headList);
|
||||
rowDisposeIndexMap = this.buildFiledMap(headList);
|
||||
this.caseLevelAndStatusValueMap = caseLevelAndStatusValueMap;
|
||||
}
|
||||
|
||||
@ -41,20 +49,20 @@ public class FunctionCaseTemplateWriteHandler extends AbstractRowHeightStyleStra
|
||||
int index = 0;
|
||||
for (List<String> list : headList) {
|
||||
for (String head : list) {
|
||||
if (StringUtils.equalsAnyIgnoreCase(head, "id")) {
|
||||
returnMap.put("ID", index);
|
||||
} else if (StringUtils.equalsAnyIgnoreCase(head, "所属模块", "所屬模塊", "Module")) {
|
||||
returnMap.put("Module", index);
|
||||
} else if (StringUtils.equalsAnyIgnoreCase(head, "责任人(ID)", "維護人(ID)", "Maintainer(ID)")) {
|
||||
returnMap.put("Maintainer", index);
|
||||
} else if (StringUtils.equalsAnyIgnoreCase(head, "用例等级", "用例等級", "Priority")) {
|
||||
returnMap.put("Priority", index);
|
||||
} else if (StringUtils.equalsAnyIgnoreCase(head, "标签", "標簽", "Tag")) {
|
||||
returnMap.put("Tag", index);
|
||||
} else if (StringUtils.equalsAnyIgnoreCase(head, "用例状态", "用例狀態", "Case status")) {
|
||||
returnMap.put("Status", index);
|
||||
} else if (StringUtils.equalsAnyIgnoreCase(head, "编辑模式", "編輯模式", "Edit Model")) {
|
||||
returnMap.put("StepModel", index);
|
||||
if (TestCaseImportFiled.ID.containsHead(head)) {
|
||||
idIndex = index;
|
||||
} else if (TestCaseImportFiled.MODULE.containsHead(head)) {
|
||||
moduleIndex = index;
|
||||
} else if (TestCaseImportFiled.MAINTAINER.containsHead(head)) {
|
||||
maintainerIndex = index;
|
||||
} else if (TestCaseImportFiled.PRIORITY.containsHead(head)) {
|
||||
priorityIndex = index;
|
||||
} else if (TestCaseImportFiled.TAG.containsHead(head)) {
|
||||
tagIndex = index;
|
||||
} else if (TestCaseImportFiled.STATUS.containsHead(head)) {
|
||||
statusIndex = index;
|
||||
} else if (TestCaseImportFiled.STEP_MODEL.containsHead(head)) {
|
||||
stepModelIndex = index;
|
||||
}
|
||||
index++;
|
||||
}
|
||||
@ -62,14 +70,6 @@ public class FunctionCaseTemplateWriteHandler extends AbstractRowHeightStyleStra
|
||||
return returnMap;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void beforeRowCreate(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder, Integer rowIndex, Integer relativeRowIndex, Boolean isHead) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void afterRowCreate(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder, Row row, Integer relativeRowIndex, Boolean isHead) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void afterRowDispose(RowWriteHandlerContext context) {
|
||||
|
||||
@ -77,68 +77,43 @@ public class FunctionCaseTemplateWriteHandler extends AbstractRowHeightStyleStra
|
||||
Sheet sheet = context.getWriteSheetHolder().getSheet();
|
||||
Drawing<?> drawingPatriarch = sheet.createDrawingPatriarch();
|
||||
|
||||
if (rowDispseIndexMap != null) {
|
||||
if (rowDisposeIndexMap != null) {
|
||||
if (isNeedId) {
|
||||
Integer idIndex = rowDispseIndexMap.get("ID");
|
||||
if(idIndex != null){
|
||||
Comment comment1 = drawingPatriarch.createCellComment(new XSSFClientAnchor(0, 0, 0, 0, idIndex, 0, idIndex + 3, 1));
|
||||
comment1.setString(new XSSFRichTextString(Translator.get("do_not_modify_header_order")+","+Translator.get("id_required")));
|
||||
sheet.getRow(0).getCell(1).setCellComment(comment1);
|
||||
}
|
||||
setComment(sheet, drawingPatriarch, idIndex, Translator.get("do_not_modify_header_order") + "," + Translator.get("id_required"));
|
||||
}
|
||||
for (Map.Entry<String, Integer> entry : rowDispseIndexMap.entrySet()) {
|
||||
String coloum = entry.getKey();
|
||||
Integer index = entry.getValue();
|
||||
|
||||
if(StringUtils.equalsAnyIgnoreCase(coloum,"Module")){
|
||||
Comment comment = drawingPatriarch.createCellComment(new XSSFClientAnchor(0, 0, 0, 0, index, 0, index + 3 , 1));
|
||||
comment.setString(new XSSFRichTextString(Translator.get("module_created_automatically")));
|
||||
sheet.getRow(0).getCell(1).setCellComment(comment);
|
||||
}else if(StringUtils.equalsAnyIgnoreCase(coloum,"Maintainer")){
|
||||
Comment comment = drawingPatriarch.createCellComment(new XSSFClientAnchor(0, 0, 0, 0, index, 0, index + 3, 1));
|
||||
comment.setString(new XSSFRichTextString(Translator.get("please_input_project_member")));
|
||||
sheet.getRow(0).getCell(1).setCellComment(comment);
|
||||
}else if(StringUtils.equalsAnyIgnoreCase(coloum,"Priority")){
|
||||
Comment comment = drawingPatriarch.createCellComment(new XSSFClientAnchor(0, 0, 0, 0, index, 0, index + 3, 1));
|
||||
List<String> list = new ArrayList<>();
|
||||
if (caseLevelAndStatusValueMap != null && caseLevelAndStatusValueMap.containsKey("caseLevel")) {
|
||||
list = caseLevelAndStatusValueMap.get("caseLevel");
|
||||
}
|
||||
if (CollectionUtils.isEmpty(list)) {
|
||||
comment.setString(new XSSFRichTextString(Translator.get("options") + "(P0、P1、P2、P3)"));
|
||||
} else {
|
||||
comment.setString(new XSSFRichTextString(Translator.get("options") + JSONArray.toJSONString(list)));
|
||||
}
|
||||
sheet.getRow(0).getCell(1).setCellComment(comment);
|
||||
}else if(StringUtils.equalsAnyIgnoreCase(coloum,"Tag")){
|
||||
Comment comment = drawingPatriarch.createCellComment(new XSSFClientAnchor(0, 0, 0, 0, index, 0, index + 3, 1));
|
||||
comment.setString(new XSSFRichTextString(Translator.get("tag_tip_pattern")));
|
||||
sheet.getRow(0).getCell(1).setCellComment(comment);
|
||||
} else if (StringUtils.equalsAnyIgnoreCase(coloum, "Status")) {
|
||||
List<String> list = new ArrayList<>();
|
||||
if (caseLevelAndStatusValueMap != null && caseLevelAndStatusValueMap.containsKey("caseStatus")) {
|
||||
list = caseLevelAndStatusValueMap.get("caseStatus");
|
||||
}
|
||||
if (!CollectionUtils.isEmpty(list)) {
|
||||
Comment comment = drawingPatriarch.createCellComment(new XSSFClientAnchor(0, 0, 0, 0, index, 0, index + 3, 1));
|
||||
comment.setString(new XSSFRichTextString(Translator.get("options") + JSONArray.toJSONString(list)));
|
||||
sheet.getRow(0).getCell(1).setCellComment(comment);
|
||||
}
|
||||
} else if (StringUtils.equalsAnyIgnoreCase(coloum, "StepModel")) {
|
||||
Comment comment = drawingPatriarch.createCellComment(new XSSFClientAnchor(0, 0, 0, 0, index, 0, index + 3, 1));
|
||||
comment.setString(new XSSFRichTextString(Translator.get("step_model_tip")));
|
||||
sheet.getRow(0).getCell(1).setCellComment(comment);
|
||||
}
|
||||
setComment(sheet, drawingPatriarch, moduleIndex, Translator.get("module_created_automatically"));
|
||||
setComment(sheet, drawingPatriarch, maintainerIndex, Translator.get("please_input_project_member"));
|
||||
setComment(sheet, drawingPatriarch, tagIndex, Translator.get("tag_tip_pattern"));
|
||||
setComment(sheet, drawingPatriarch, stepModelIndex, Translator.get("step_model_tip"));
|
||||
|
||||
List<String> list = new ArrayList<>();
|
||||
if (caseLevelAndStatusValueMap != null && caseLevelAndStatusValueMap.containsKey("caseLevel")) {
|
||||
list = caseLevelAndStatusValueMap.get("caseLevel");
|
||||
}
|
||||
if (CollectionUtils.isEmpty(list)) {
|
||||
setComment(sheet, drawingPatriarch, priorityIndex, Translator.get("options") + "(P0、P1、P2、P3)");
|
||||
} else {
|
||||
setComment(sheet, drawingPatriarch, priorityIndex, Translator.get("options") + JSONArray.toJSONString(list));
|
||||
}
|
||||
|
||||
list.clear();
|
||||
if (caseLevelAndStatusValueMap != null && caseLevelAndStatusValueMap.containsKey("caseStatus")) {
|
||||
list = caseLevelAndStatusValueMap.get("caseStatus");
|
||||
}
|
||||
if (CollectionUtils.isNotEmpty(list)) {
|
||||
setComment(sheet, drawingPatriarch, statusIndex, Translator.get("options") + JSONArray.toJSONString(list));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void setHeadColumnHeight(Row row, int relativeRowIndex) {
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void setContentColumnHeight(Row row, int relativeRowIndex) {
|
||||
private void setComment(Sheet sheet, Drawing<?> drawingPatriarch, Integer index, String text) {
|
||||
if (index == null) {
|
||||
return;
|
||||
}
|
||||
Comment comment = drawingPatriarch.createCellComment(new XSSFClientAnchor(0, 0, 0, 0, index, 0, index + 3, 1));
|
||||
comment.setString(new XSSFRichTextString(text));
|
||||
sheet.getRow(0).getCell(1).setCellComment(comment);
|
||||
}
|
||||
}
|
||||
|
@ -0,0 +1,21 @@
|
||||
package io.metersphere.track.constants;
|
||||
|
||||
public enum TestCaseExportOtherField {
|
||||
VERSION("version"),
|
||||
COMMEND("commend"),
|
||||
EXECUTE_RESULT("executeResult"),
|
||||
REVIEW_RESULT("reviewResult"),
|
||||
CREATOR("creator"),
|
||||
CREATE_TIME("createTime"),
|
||||
UPDATE_TIME("updateTime");
|
||||
|
||||
private String value;
|
||||
|
||||
TestCaseExportOtherField(String value) {
|
||||
this.value = value;
|
||||
}
|
||||
|
||||
public String getValue() {
|
||||
return value;
|
||||
}
|
||||
}
|
@ -287,7 +287,7 @@ public class TestCaseController {
|
||||
@PostMapping("/export/testcase")
|
||||
@RequiresPermissions(PermissionConstants.PROJECT_TRACK_CASE_READ_EXPORT)
|
||||
@MsAuditLog(module = OperLogModule.TRACK_TEST_CASE, type = OperLogConstants.EXPORT, sourceId = "#request.id", title = "#request.name", project = "#request.projectId")
|
||||
public void testCaseExport(HttpServletResponse response, @RequestBody TestCaseBatchRequest request) {
|
||||
public void testCaseExport(HttpServletResponse response, @RequestBody TestCaseExportRequest request) {
|
||||
testCaseService.testCaseExport(response, request);
|
||||
}
|
||||
|
||||
|
@ -18,7 +18,6 @@ public class TestCaseDTO extends TestCaseWithBLOBs {
|
||||
private String lastResultId;
|
||||
private String projectName;
|
||||
private String createName;
|
||||
private String lastExecuteResult;
|
||||
private String versionName;
|
||||
private List<CustomFieldDao> fields;
|
||||
private List<String> caseTags = new ArrayList<>();
|
||||
|
@ -0,0 +1,21 @@
|
||||
package io.metersphere.track.request.testcase;
|
||||
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
public class TestCaseExportRequest extends TestCaseBatchRequest {
|
||||
private List<TestCaseExportHeader> baseHeaders;
|
||||
private List<TestCaseExportHeader> customHeaders;
|
||||
private List<TestCaseExportHeader> otherHeaders;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
public static class TestCaseExportHeader {
|
||||
private String id;
|
||||
private String name;
|
||||
}
|
||||
}
|
@ -31,6 +31,8 @@ import io.metersphere.controller.request.ResetOrderRequest;
|
||||
import io.metersphere.controller.request.member.QueryMemberRequest;
|
||||
import io.metersphere.dto.*;
|
||||
import io.metersphere.excel.constants.TestCaseImportFiled;
|
||||
import io.metersphere.excel.converter.TestCaseExportConverter;
|
||||
import io.metersphere.excel.converter.TestCaseExportConverterFactory;
|
||||
import io.metersphere.excel.domain.*;
|
||||
import io.metersphere.excel.handler.FunctionCaseMergeWriteHandler;
|
||||
import io.metersphere.excel.handler.FunctionCaseTemplateWriteHandler;
|
||||
@ -63,6 +65,7 @@ import org.apache.commons.lang3.StringUtils;
|
||||
import org.apache.ibatis.session.ExecutorType;
|
||||
import org.apache.ibatis.session.SqlSession;
|
||||
import org.apache.ibatis.session.SqlSessionFactory;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.mybatis.spring.SqlSessionUtils;
|
||||
import org.springframework.context.annotation.Lazy;
|
||||
import org.springframework.stereotype.Service;
|
||||
@ -1326,38 +1329,73 @@ public class TestCaseService {
|
||||
return list;
|
||||
}
|
||||
|
||||
|
||||
|
||||
public void testCaseExport(HttpServletResponse response, TestCaseBatchRequest request) {
|
||||
public void testCaseExport(HttpServletResponse response, TestCaseExportRequest request) {
|
||||
String projectId = request.getProjectId();
|
||||
request.getCondition().setStatusIsNot(CommonConstants.TrashStatus);
|
||||
List<TestCaseDTO> testCaseList = getExportData(request);
|
||||
testCaseExport(response, projectId, testCaseList, true);
|
||||
}
|
||||
List<TestCaseDTO> testCases = getExportData(request);
|
||||
List<List<String>> headList = getTestcaseExportHeads(request);
|
||||
|
||||
public void testCaseExport(HttpServletResponse response, String projectId, List<TestCaseDTO> testCaseList, boolean needIdCol) {
|
||||
TestCaseExcelData testCaseExcelData = new TestCaseExcelDataFactory().getTestCaseExcelDataLocal();
|
||||
Map<Integer, Integer> rowMergeInfo = new HashMap<>();
|
||||
TestCaseTemplateDao testCaseTemplate = testCaseTemplateService.getTemplate(projectId);
|
||||
List<CustomFieldDao> customFields = Optional.ofNullable(testCaseTemplate.getCustomFields()).orElse(new ArrayList<>());
|
||||
List<List<String>> headList = testCaseExcelData.getHead(needIdCol, customFields);
|
||||
FunctionCaseMergeWriteHandler writeHandler = new FunctionCaseMergeWriteHandler(rowMergeInfo, headList);
|
||||
boolean isUseCustomId = projectService.useCustomNum(projectId);
|
||||
|
||||
Map<String, List<String>> caseLevelAndStatusValueMap = testCaseTemplateService.getCaseLevelAndStatusMapByProjectId(projectId);
|
||||
FunctionCaseTemplateWriteHandler handler = new FunctionCaseTemplateWriteHandler(needIdCol, headList, caseLevelAndStatusValueMap);
|
||||
FunctionCaseTemplateWriteHandler handler = new FunctionCaseTemplateWriteHandler(true, headList, caseLevelAndStatusValueMap);
|
||||
|
||||
List<TestCaseExcelData> excelData = parseCaseData2ExcelData(testCaseList, rowMergeInfo, isUseCustomId);
|
||||
List<TestCaseExcelData> excelData = parseCaseData2ExcelData(testCases, rowMergeInfo, isUseCustomId, request.getOtherHeaders());
|
||||
List<List<Object>> data = parseExcelData2List(headList, excelData);
|
||||
new EasyExcelExporter(testCaseExcelData.getClass())
|
||||
new EasyExcelExporter(new TestCaseExcelDataFactory().getTestCaseExcelDataLocal().getClass())
|
||||
.exportByCustomWriteHandler(response, headList, data, Translator.get("test_case_import_template_name"),
|
||||
Translator.get("test_case_import_template_sheet"), handler, writeHandler);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
private List<List<String>> getTestcaseExportHeads(TestCaseExportRequest request) {
|
||||
List<List<String>> headList = new ArrayList<>() {{
|
||||
addAll(request.getBaseHeaders()
|
||||
.stream()
|
||||
.map(item -> Arrays.asList(item.getName()))
|
||||
.collect(Collectors.toList()));
|
||||
addAll(request.getCustomHeaders()
|
||||
.stream()
|
||||
.map(item -> Arrays.asList(item.getName()))
|
||||
.collect(Collectors.toList()));
|
||||
addAll(request.getOtherHeaders()
|
||||
.stream()
|
||||
.map(item -> Arrays.asList(item.getName()))
|
||||
.collect(Collectors.toList()));
|
||||
}};
|
||||
return headList;
|
||||
}
|
||||
|
||||
public void testCaseTemplateExport(String projectId, String importType, HttpServletResponse response) {
|
||||
//导入更新 or 开启使用自定义ID时,导出ID列
|
||||
boolean needIdCol = projectService.useCustomNum(projectId) || StringUtils.equals(importType, FunctionCaseImportEnum.Update.name());
|
||||
testCaseExport(response, projectId, generateExportData(projectId), needIdCol);
|
||||
|
||||
List<List<String>> heads = getExportTemplateHeads(projectId, needIdCol);
|
||||
|
||||
TestCaseExcelData testCaseExcelData = new TestCaseExcelDataFactory().getTestCaseExcelDataLocal();
|
||||
Map<Integer, Integer> rowMergeInfo = new HashMap<>();
|
||||
|
||||
FunctionCaseMergeWriteHandler writeHandler = new FunctionCaseMergeWriteHandler(rowMergeInfo, heads);
|
||||
boolean isUseCustomId = projectService.useCustomNum(projectId);
|
||||
|
||||
Map<String, List<String>> caseLevelAndStatusValueMap = testCaseTemplateService.getCaseLevelAndStatusMapByProjectId(projectId);
|
||||
FunctionCaseTemplateWriteHandler handler = new FunctionCaseTemplateWriteHandler(needIdCol, heads, caseLevelAndStatusValueMap);
|
||||
|
||||
List<TestCaseExcelData> excelData = parseCaseData2ExcelData(generateExportData(projectId),
|
||||
rowMergeInfo, isUseCustomId, null);
|
||||
List<List<Object>> data = parseExcelData2List(heads, excelData);
|
||||
new EasyExcelExporter(testCaseExcelData.getClass())
|
||||
.exportByCustomWriteHandler(response, heads, data, Translator.get("test_case_import_template_name"),
|
||||
Translator.get("test_case_import_template_sheet"), handler, writeHandler);
|
||||
}
|
||||
|
||||
private List<List<String>> getExportTemplateHeads(String projectId, boolean needIdCol) {
|
||||
TestCaseTemplateDao testCaseTemplate = testCaseTemplateService.getTemplate(projectId);
|
||||
List<CustomFieldDao> customFields = Optional.ofNullable(testCaseTemplate.getCustomFields()).orElse(new ArrayList<>());
|
||||
List<List<String>> heads = new TestCaseExcelDataFactory().getTestCaseExcelDataLocal().getHead(needIdCol, customFields);
|
||||
return heads;
|
||||
}
|
||||
|
||||
|
||||
@ -1419,27 +1457,33 @@ public class TestCaseService {
|
||||
}
|
||||
}
|
||||
|
||||
TestCaseImportFiled[] importFields = TestCaseImportFiled.values();
|
||||
|
||||
|
||||
for (TestCaseExcelData model : data) {
|
||||
List<Object> fields = new ArrayList<>();
|
||||
Map<String, String> customDataMaps = Optional.ofNullable(model.getCustomDatas()).orElse(new HashMap<>());
|
||||
TestCaseImportFiled[] importFields = TestCaseImportFiled.values();
|
||||
|
||||
Map<String, String> customDataMaps = Optional.ofNullable(model.getCustomDatas())
|
||||
.orElse(new HashMap<>());
|
||||
Map<String, String> otherFieldMaps = Optional.ofNullable(model.getOtherFields())
|
||||
.orElse(new HashMap<>());
|
||||
for (String head : headList) {
|
||||
boolean isSystemField = false;
|
||||
for (TestCaseImportFiled importFiled : importFields) {
|
||||
if (importFiled.getFiledLangMap().values().contains(head)) {
|
||||
if (importFiled.containsHead(head)) {
|
||||
fields.add(importFiled.parseExcelDataValue(model));
|
||||
isSystemField = true;
|
||||
}
|
||||
}
|
||||
if (!isSystemField) {
|
||||
String value = customDataMaps.get(head);
|
||||
if (value == null) {
|
||||
value = otherFieldMaps.get(head);
|
||||
}
|
||||
if (value == null) {
|
||||
value = "";
|
||||
}
|
||||
fields.add(value);
|
||||
}
|
||||
|
||||
}
|
||||
result.add(fields);
|
||||
}
|
||||
@ -1467,8 +1511,8 @@ public class TestCaseService {
|
||||
return testCaseList;
|
||||
}
|
||||
|
||||
private List<TestCaseExcelData> parseCaseData2ExcelData(List<TestCaseDTO> testCaseList,
|
||||
Map<Integer, Integer> rowMergeInfo, Boolean isUseCustomId) {
|
||||
private List<TestCaseExcelData> parseCaseData2ExcelData(List<TestCaseDTO> testCaseList, Map<Integer, Integer> rowMergeInfo,
|
||||
Boolean isUseCustomId, List<TestCaseExportRequest.TestCaseExportHeader> otherHeaders) {
|
||||
if (CollectionUtils.isEmpty(testCaseList)) {
|
||||
return new ArrayList<>();
|
||||
}
|
||||
@ -1491,41 +1535,18 @@ public class TestCaseService {
|
||||
TestCaseDTO t = testCaseList.get(rowIndex);
|
||||
List<String> stepDescList = new ArrayList<>();
|
||||
List<String> stepResultList = new ArrayList<>();
|
||||
TestCaseExcelData data = new TestCaseExcelData();
|
||||
|
||||
setExportSystemField(t, customNameMap, customSelectValueMap);
|
||||
TestCaseExcelData data = new TestCaseExcelData();
|
||||
BeanUtils.copyBean(data, t);
|
||||
if (isUseCustomId) {
|
||||
data.setCustomNum(t.getCustomNum());
|
||||
} else {
|
||||
if (t.getNum() == null) {
|
||||
data.setCustomNum("");
|
||||
} else {
|
||||
data.setCustomNum(String.valueOf(t.getNum()));
|
||||
}
|
||||
}
|
||||
buildExportCustomNum(isUseCustomId, t, data);
|
||||
buildExportStep(t, stepDescList, stepResultList, data);
|
||||
buildExportCustomField(customSelectValueMap, customNameMap, t, data);
|
||||
buildExportOtherField(data, t, otherHeaders);
|
||||
|
||||
if (CollectionUtils.isNotEmpty(stepDescList)) {
|
||||
// 如果有多条步骤则添加多条数据,之后合并单元格
|
||||
for (int i = 0; i < stepDescList.size(); i++) {
|
||||
TestCaseExcelData excelData;
|
||||
if (i == 0) {
|
||||
// 第一行存全量元素
|
||||
excelData = data;
|
||||
if (stepDescList.size() > 1) {
|
||||
// 保存合并单元格的下标和数量
|
||||
rowMergeInfo.put(list.size() + 1, stepDescList.size());
|
||||
}
|
||||
} else {
|
||||
// 之后的行只存步骤
|
||||
excelData = new TestCaseExcelData();
|
||||
}
|
||||
excelData.setStepDesc(stepDescList.get(i));
|
||||
excelData.setStepResult(stepResultList.get(i));
|
||||
list.add(excelData);
|
||||
}
|
||||
buildExportMergeData(rowMergeInfo, list, stepDescList, stepResultList, data);
|
||||
} else {
|
||||
list.add(data);
|
||||
}
|
||||
@ -1533,6 +1554,61 @@ public class TestCaseService {
|
||||
return list;
|
||||
}
|
||||
|
||||
private void buildExportOtherField(TestCaseExcelData data, TestCaseDTO t, List<TestCaseExportRequest.TestCaseExportHeader> otherHeaders) {
|
||||
if (CollectionUtils.isEmpty(otherHeaders)) {
|
||||
return;
|
||||
}
|
||||
List<String> keys = otherHeaders.stream()
|
||||
.map(TestCaseExportRequest.TestCaseExportHeader::getId)
|
||||
.collect(Collectors.toList());
|
||||
Map<String, TestCaseExportConverter> converterMaps = TestCaseExportConverterFactory.getConverters(keys);
|
||||
HashMap<String, String> otherFields = new HashMap<>();
|
||||
otherHeaders.forEach(header -> {
|
||||
TestCaseExportConverter converter = converterMaps.get(header.getId());
|
||||
if (converter != null) {
|
||||
otherFields.put(header.getName(), converter.parse(t));
|
||||
} else {
|
||||
otherFields.put(header.getName(), "");
|
||||
}
|
||||
});
|
||||
data.setOtherFields(otherFields);
|
||||
}
|
||||
|
||||
private void buildExportCustomNum(Boolean isUseCustomId, TestCaseDTO t, TestCaseExcelData data) {
|
||||
if (isUseCustomId) {
|
||||
data.setCustomNum(t.getCustomNum());
|
||||
} else {
|
||||
if (t.getNum() == null) {
|
||||
data.setCustomNum("");
|
||||
} else {
|
||||
data.setCustomNum(String.valueOf(t.getNum()));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@NotNull
|
||||
private void buildExportMergeData(Map<Integer, Integer> rowMergeInfo,
|
||||
List<TestCaseExcelData> list, List<String> stepDescList,
|
||||
List<String> stepResultList, TestCaseExcelData data) {
|
||||
for (int i = 0; i < stepDescList.size(); i++) {
|
||||
TestCaseExcelData excelData;
|
||||
if (i == 0) {
|
||||
// 第一行存全量元素
|
||||
excelData = data;
|
||||
if (stepDescList.size() > 1) {
|
||||
// 保存合并单元格的下标和数量
|
||||
rowMergeInfo.put(list.size() + 1, stepDescList.size());
|
||||
}
|
||||
} else {
|
||||
// 之后的行只存步骤
|
||||
excelData = new TestCaseExcelData();
|
||||
}
|
||||
excelData.setStepDesc(stepDescList.get(i));
|
||||
excelData.setStepResult(stepResultList.get(i));
|
||||
list.add(excelData);
|
||||
}
|
||||
}
|
||||
|
||||
private void buildExportCustomField(Map<String, Map<String, String>> customSelectValueMap, Map<String, String> customNameMap, TestCaseDTO t, TestCaseExcelData data) {
|
||||
try {
|
||||
List<CustomFieldResource> fields = customFieldTestCaseService.getByResourceId(t.getId());
|
||||
|
@ -318,6 +318,12 @@ create_user=Create user
|
||||
test_case_status=Case status
|
||||
id_not_rightful=ID is not rightful
|
||||
project_reference_multiple_plateform=Projects point to multiple third-party platforms
|
||||
test_case_comment_template=[comment:%s %s %s(%s)]\n%s\n
|
||||
test_case_comment=Case
|
||||
test_case_plan_comment=Execute
|
||||
test_case_review_comment=Review
|
||||
plan_case_status_blocking=Blocking
|
||||
plan_case_status_skip=Skip
|
||||
# mock
|
||||
mock_warning=No matching Mock expectation was found
|
||||
zentao_test_type_error=invalid Zentao request
|
||||
|
@ -317,6 +317,12 @@ create_user=创建人
|
||||
test_case_status=用例状态
|
||||
id_not_rightful=ID 不合法
|
||||
project_reference_multiple_plateform=项目指向多个第三方平台
|
||||
test_case_comment_template=【评论:%s %s %s(%s)】\n%s\n
|
||||
test_case_comment=用例
|
||||
test_case_plan_comment=执行
|
||||
test_case_review_comment=评审
|
||||
plan_case_status_blocking=阻塞
|
||||
plan_case_status_skip=跳过
|
||||
# mock
|
||||
mock_warning=未找到匹配的Mock期望
|
||||
zentao_test_type_error=无效的 Zentao 请求
|
||||
|
@ -316,6 +316,12 @@ create_user=創建人
|
||||
test_case_status=用例狀態
|
||||
id_not_rightful=ID 不合法
|
||||
project_reference_multiple_plateform=項目指向多個第三方平臺
|
||||
test_case_comment_template=【評論:%s %s %s(%s)】\n%s\n
|
||||
test_case_comment=用例
|
||||
test_case_plan_comment=執行
|
||||
test_case_review_comment=評審
|
||||
plan_case_status_blocking=阻塞
|
||||
plan_case_status_skip=跳過
|
||||
# mock
|
||||
mock_warning=未找到匹配的Mock期望
|
||||
zentao_test_type_error=請求方式錯誤
|
||||
|
@ -107,6 +107,7 @@
|
||||
:public-enable="false"
|
||||
:current-version="currentVersion"
|
||||
:version-enable="versionEnable"
|
||||
@closeExport="closeExport"
|
||||
@refreshTable="refresh"
|
||||
@testCaseEdit="editTestCase"
|
||||
@testCaseCopy="copyTestCase"
|
||||
@ -584,12 +585,15 @@ export default {
|
||||
this.activeName = "default";
|
||||
}
|
||||
},
|
||||
exportTestCase(type) {
|
||||
exportTestCase(type, param) {
|
||||
if (this.activeDom !== 'left') {
|
||||
this.$warning(this.$t('test_track.case.export.export_tip'));
|
||||
return;
|
||||
}
|
||||
this.$refs.testCaseList.exportTestCase(type);
|
||||
this.$refs.testCaseList.exportTestCase(type, param);
|
||||
},
|
||||
closeExport() {
|
||||
this.$refs.nodeTree.closeExport();
|
||||
},
|
||||
init(route) {
|
||||
let path = route.path;
|
||||
|
@ -1,85 +0,0 @@
|
||||
<template>
|
||||
<el-dialog class="testcase-import" :title="$t('test_track.case.import.case_export')" :visible.sync="dialogVisible"
|
||||
@close="close">
|
||||
|
||||
<el-row class="import-row" style="margin-left: 34px">
|
||||
<el-radio v-model="exportType" label="excel">{{$t('commons.excelFile')}}</el-radio>
|
||||
<el-radio v-model="exportType" label="xmind">{{$t('commons.xmindFile')}}</el-radio>
|
||||
</el-row>
|
||||
|
||||
<span slot="footer" class="dialog-footer">
|
||||
<el-button @click="dialogVisible = false">{{$t('commons.cancel')}}</el-button>
|
||||
<el-button type="primary" @click="exportTestCase">{{$t('commons.export')}}</el-button>
|
||||
</span>
|
||||
</el-dialog>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import ElUploadList from "element-ui/packages/upload/src/upload-list";
|
||||
import MsTableButton from '../../../../components/common/components/MsTableButton';
|
||||
import {getCurrentProjectID, listenGoBack, removeGoBackListener} from "../../../../../common/js/utils";
|
||||
import {TokenKey} from '../../../../../common/js/constants';
|
||||
import axios from "axios";
|
||||
|
||||
export default {
|
||||
name: "TestCaseImport",
|
||||
components: {ElUploadList, MsTableButton},
|
||||
data() {
|
||||
return {
|
||||
exportType:"excel",
|
||||
dialogVisible: false,
|
||||
projectId:"",
|
||||
}
|
||||
},
|
||||
created() {
|
||||
},
|
||||
activated() {
|
||||
},
|
||||
methods: {
|
||||
handleError(err, file, fileList) {
|
||||
this.isLoading = false;
|
||||
this.$error(err.message);
|
||||
},
|
||||
open() {
|
||||
listenGoBack(this.close);
|
||||
this.projectId = getCurrentProjectID();
|
||||
this.dialogVisible = true;
|
||||
},
|
||||
close() {
|
||||
removeGoBackListener(this.close);
|
||||
this.dialogVisible = false;
|
||||
},
|
||||
exportTestCase(){
|
||||
this.$emit('exportTestCase',this.exportType);
|
||||
this.close();
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style>
|
||||
</style>
|
||||
|
||||
<style scoped>
|
||||
|
||||
.download-template {
|
||||
padding-top: 0px;
|
||||
padding-bottom: 10px;
|
||||
}
|
||||
|
||||
.import-row {
|
||||
padding-top: 20px;
|
||||
}
|
||||
|
||||
.testcase-import >>> .el-dialog {
|
||||
width: 400px;
|
||||
}
|
||||
|
||||
.testcase-import-img {
|
||||
width: 614px;
|
||||
height: 312px;
|
||||
size: 200px;
|
||||
}
|
||||
|
||||
|
||||
</style>
|
@ -222,7 +222,6 @@
|
||||
|
||||
import MsTableHeaderSelectPopover from "@/business/components/common/components/table/MsTableHeaderSelectPopover";
|
||||
import TestCaseImport from './import/TestCaseImport';
|
||||
import TestCaseExport from '../components/TestCaseExport';
|
||||
import MsTablePagination from '../../../../components/common/pagination/TablePagination';
|
||||
import NodeBreadcrumb from '../../common/NodeBreadcrumb';
|
||||
import MsTableHeader from '../../../../components/common/components/MsTableHeader';
|
||||
@ -310,7 +309,6 @@ export default {
|
||||
TypeTableItem,
|
||||
PriorityTableItem,
|
||||
TestCaseImport,
|
||||
TestCaseExport,
|
||||
MsTablePagination,
|
||||
NodeBreadcrumb,
|
||||
MsTableHeader,
|
||||
@ -1016,12 +1014,13 @@ export default {
|
||||
}
|
||||
this.$refs.testCaseImport.open();
|
||||
},
|
||||
exportTestCase(exportType) {
|
||||
exportTestCase(exportType, fieldParam) {
|
||||
if (!this.projectId) {
|
||||
this.$warning(this.$t('commons.check_project_tip'));
|
||||
return;
|
||||
}
|
||||
|
||||
let param = buildBatchParam(this, this.$refs.table.selectIds);
|
||||
Object.assign(param, fieldParam);
|
||||
let config = {};
|
||||
let fileNameSuffix = "";
|
||||
if (exportType === 'xmind') {
|
||||
@ -1029,7 +1028,7 @@ export default {
|
||||
url: '/test/case/export/testcase/xmind',
|
||||
method: 'post',
|
||||
responseType: 'blob',
|
||||
data: buildBatchParam(this, this.$refs.table.selectIds)
|
||||
data: param
|
||||
};
|
||||
fileNameSuffix = ".xmind";
|
||||
} else {
|
||||
@ -1037,7 +1036,7 @@ export default {
|
||||
url: '/test/case/export/testcase',
|
||||
method: 'post',
|
||||
responseType: 'blob',
|
||||
data: buildBatchParam(this, this.$refs.table.selectIds)
|
||||
data: param
|
||||
};
|
||||
fileNameSuffix = ".xlsx";
|
||||
}
|
||||
@ -1056,8 +1055,10 @@ export default {
|
||||
aTag.href = URL.createObjectURL(blob);
|
||||
aTag.click();
|
||||
URL.revokeObjectURL(aTag.href);
|
||||
this.$emit('closeExport');
|
||||
} else {
|
||||
navigator.msSaveBlob(blob, filename);
|
||||
this.$emit('closeExport');
|
||||
}
|
||||
});
|
||||
},
|
||||
|
@ -0,0 +1,94 @@
|
||||
<template>
|
||||
<el-dialog class="testcase-import" :title="$t('test_track.case.import.case_export')" :visible.sync="dialogVisible"
|
||||
@close="close">
|
||||
|
||||
<span class="format-title">
|
||||
{{ $t('test_track.case.import.import_format') }}
|
||||
</span>
|
||||
<el-row class="import-row">
|
||||
<el-col :span="12">
|
||||
<el-radio v-model="exportType" label="excel">{{ $t('commons.excelFile') }}</el-radio>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-radio v-model="exportType" label="xmind">{{ $t('commons.xmindFile') }}</el-radio>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<test-case-export-field-select
|
||||
v-if="exportType === 'excel'"
|
||||
ref="testCaseExportFieldSelect"/>
|
||||
|
||||
|
||||
<span slot="footer" class="dialog-footer">
|
||||
<el-button @click="dialogVisible = false">{{ $t('commons.cancel') }}</el-button>
|
||||
<el-button type="primary" @click="exportTestCase">{{ $t('commons.export') }}</el-button>
|
||||
</span>
|
||||
</el-dialog>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import ElUploadList from "element-ui/packages/upload/src/upload-list";
|
||||
import MsTableButton from '../../../../common/components/MsTableButton';
|
||||
import {getCurrentProjectID, listenGoBack, removeGoBackListener} from "../../../../../../common/js/utils";
|
||||
import TestCaseExportFieldSelect from "@/business/components/track/case/components/export/TestCaseExportFieldSelect";
|
||||
|
||||
export default {
|
||||
name: "TestCaseImport",
|
||||
components: {TestCaseExportFieldSelect, ElUploadList, MsTableButton},
|
||||
data() {
|
||||
return {
|
||||
exportType: "excel",
|
||||
dialogVisible: false,
|
||||
projectId: ""
|
||||
}
|
||||
},
|
||||
activated() {
|
||||
},
|
||||
methods: {
|
||||
handleError(err, file, fileList) {
|
||||
this.isLoading = false;
|
||||
this.$error(err.message);
|
||||
},
|
||||
open() {
|
||||
listenGoBack(this.close);
|
||||
this.projectId = getCurrentProjectID();
|
||||
this.dialogVisible = true;
|
||||
},
|
||||
close() {
|
||||
removeGoBackListener(this.close);
|
||||
this.dialogVisible = false;
|
||||
},
|
||||
exportTestCase() {
|
||||
let param = this.$refs.testCaseExportFieldSelect.getExportParam();
|
||||
this.$emit('exportTestCase', this.exportType, param);
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style>
|
||||
</style>
|
||||
|
||||
<style scoped>
|
||||
|
||||
.import-row {
|
||||
padding-top: 20px;
|
||||
}
|
||||
|
||||
.testcase-import >>> .el-dialog {
|
||||
width: 600px;
|
||||
}
|
||||
|
||||
.testcase-import >>> .el-dialog .el-dialog__title {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.testcase-import >>> .el-dialog .el-dialog__body {
|
||||
padding: 20px;
|
||||
}
|
||||
|
||||
.format-title {
|
||||
font-size: 16px;
|
||||
font-weight: bold;
|
||||
}
|
||||
</style>
|
@ -0,0 +1,46 @@
|
||||
<template>
|
||||
<div>
|
||||
<el-row v-for="rowIndex in fieldRowCount" :key="rowIndex">
|
||||
<span v-for="(item, index) in fields"
|
||||
:key="item.id">
|
||||
<el-col :span="6"
|
||||
v-if="Math.floor(index / colCountEachRow) === rowIndex - 1">
|
||||
<el-checkbox v-model="item.enable" @change="change">
|
||||
{{ item.name }}
|
||||
</el-checkbox>
|
||||
</el-col>
|
||||
</span>
|
||||
</el-row>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: "TestCaseExportFieldList",
|
||||
props: ['fields'],
|
||||
data() {
|
||||
return {
|
||||
colCountEachRow: 4
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
fieldRowCount() {
|
||||
if (!this.fields) {
|
||||
return 0;
|
||||
}
|
||||
return Math.ceil(this.fields.length / this.colCountEachRow);
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
change(value) {
|
||||
this.$emit('enableChange', value);
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
.el-row {
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
</style>
|
@ -0,0 +1,236 @@
|
||||
<template>
|
||||
<div>
|
||||
<div class="export-title"
|
||||
@click="showSelect = !showSelect">
|
||||
<span>
|
||||
{{ $t('test_track.case.import.select_import_field') }}
|
||||
</span>
|
||||
<i class="el-icon-arrow-down"
|
||||
v-if="showSelect"/>
|
||||
<i class="el-icon-arrow-left"
|
||||
v-if="!showSelect"/>
|
||||
</div>
|
||||
|
||||
<el-divider/>
|
||||
|
||||
<div v-show="showSelect">
|
||||
<el-checkbox class="select-all-checkbox"
|
||||
v-model="selectAll" @change="handleSelectAllChange">
|
||||
{{ $t('test_track.case.import.select_import_all_field') }}
|
||||
</el-checkbox>
|
||||
|
||||
<test-case-export-field-select-item
|
||||
type="EXPORT_BASE_FIELD"
|
||||
:title="$t('test_track.case.import.base_field')"
|
||||
:fields="baseFields"
|
||||
@selectAllChange="handleItemSelectAllChange"
|
||||
ref="baseSelectItem"/>
|
||||
|
||||
<test-case-export-field-select-item
|
||||
type="EXPORT_CUSTOM_FIELD"
|
||||
:title="$t('test_track.case.import.custom_field')"
|
||||
:fields="customFields"
|
||||
@selectAllChange="handleItemSelectAllChange"
|
||||
ref="customSelectItem"/>
|
||||
|
||||
<test-case-export-field-select-item
|
||||
type="EXPORT_OTHER_FIELD"
|
||||
:title="$t('test_track.case.import.other_field')"
|
||||
:fields="otherFields"
|
||||
@selectAllChange="handleItemSelectAllChange"
|
||||
ref="otherSelectItem"/>
|
||||
|
||||
<div class="other-field-tip">
|
||||
{{ $t('test_track.case.import.other_field_tip') }}
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import {getCurrentProjectID} from "@/common/js/utils";
|
||||
import TestCaseExportFieldList from "@/business/components/track/case/components/export/TestCaseExportFieldList";
|
||||
import {getTestTemplate} from "@/network/custom-field-template";
|
||||
import TestCaseExportFieldSelectItem
|
||||
from "@/business/components/track/case/components/export/TestCaseExportFieldSelectItem";
|
||||
|
||||
export default {
|
||||
name: "TestCaseExportFieldSelect",
|
||||
components: {TestCaseExportFieldSelectItem, TestCaseExportFieldList},
|
||||
data() {
|
||||
return {
|
||||
selectAll: false,
|
||||
showSelect: true,
|
||||
baseFields: [
|
||||
{
|
||||
id: 'ID',
|
||||
key: 'A',
|
||||
name: 'ID',
|
||||
enable: true
|
||||
},
|
||||
{
|
||||
id: 'name',
|
||||
key: 'B',
|
||||
name: this.$t("test_track.case.name"),
|
||||
enable: true
|
||||
},
|
||||
{
|
||||
id: 'nodeId',
|
||||
key: 'C',
|
||||
name: this.$t("test_track.case.module"),
|
||||
enable: true
|
||||
},
|
||||
{
|
||||
id: 'prerequisite',
|
||||
key: 'D',
|
||||
name: this.$t("test_track.case.prerequisite"),
|
||||
enable: true
|
||||
},
|
||||
{
|
||||
id: 'remark',
|
||||
key: 'E',
|
||||
name: this.$t("commons.remark"),
|
||||
enable: true
|
||||
},
|
||||
{
|
||||
id: 'stepDesc',
|
||||
key: 'F',
|
||||
name: this.$t("test_track.case.step_describe"),
|
||||
enable: true
|
||||
},
|
||||
{
|
||||
id: 'stepResult',
|
||||
key: 'G',
|
||||
name: this.$t("test_track.case.expected_results"),
|
||||
enable: true
|
||||
},
|
||||
{
|
||||
id: 'stepModel',
|
||||
key: 'H',
|
||||
name: this.$t("test_track.case.step_model"),
|
||||
enable: true
|
||||
},
|
||||
{
|
||||
id: 'tags',
|
||||
key: 'I',
|
||||
name: this.$t("commons.tag"),
|
||||
enable: true
|
||||
},
|
||||
],
|
||||
customFields: [],
|
||||
otherFields: [
|
||||
{
|
||||
id: 'version',
|
||||
key: 'A',
|
||||
name: this.$t("commons.version"),
|
||||
enable: false
|
||||
},
|
||||
{
|
||||
id: 'commend',
|
||||
key: 'B',
|
||||
name: this.$t("commons.comment"),
|
||||
enable: false
|
||||
},
|
||||
{
|
||||
id: 'executeResult',
|
||||
key: 'C',
|
||||
name: this.$t("test_track.plan.execute_result"),
|
||||
enable: false
|
||||
},
|
||||
{
|
||||
id: 'reviewResult',
|
||||
key: 'D',
|
||||
name: this.$t("test_track.review_view.execute_result"),
|
||||
enable: false
|
||||
},
|
||||
{
|
||||
id: 'creator',
|
||||
key: 'E',
|
||||
name: this.$t("commons.creator"),
|
||||
enable: false
|
||||
},
|
||||
{
|
||||
id: 'createTime',
|
||||
key: 'F',
|
||||
name: this.$t("commons.create_time"),
|
||||
enable: false
|
||||
},
|
||||
{
|
||||
id: 'updateTime',
|
||||
key: 'G',
|
||||
name: this.$t("commons.update_time"),
|
||||
enable: false
|
||||
},
|
||||
]
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
selectItems() {
|
||||
return [this.$refs.baseSelectItem, this.$refs.customSelectItem, this.$refs.otherSelectItem];
|
||||
}
|
||||
},
|
||||
created() {
|
||||
this.projectId = getCurrentProjectID();
|
||||
getTestTemplate()
|
||||
.then((template) => {
|
||||
template.customFields.forEach(item => {
|
||||
item.enable = true;
|
||||
});
|
||||
this.customFields = template.customFields;
|
||||
// 系统字段排前面
|
||||
this.customFields.sort((a, b) => a.system && !b.system ? -1 : 1);
|
||||
});
|
||||
},
|
||||
methods: {
|
||||
getExportParam() {
|
||||
return {
|
||||
baseHeaders: this.selectItems[0].getExportParam(),
|
||||
customHeaders: this.selectItems[1].getExportParam(),
|
||||
otherHeaders: this.selectItems[2].getExportParam(),
|
||||
}
|
||||
},
|
||||
handleSelectAllChange() {
|
||||
this.selectItems.forEach(item => {
|
||||
item.selectAllChange(this.selectAll);
|
||||
});
|
||||
},
|
||||
handleItemSelectAllChange() {
|
||||
let isSelectAll = true;
|
||||
this.selectItems.forEach(item => {
|
||||
if (!item.selectAll) {
|
||||
isSelectAll = false;
|
||||
}
|
||||
});
|
||||
this.selectAll = isSelectAll;
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
|
||||
.export-title {
|
||||
font-size: 16px;
|
||||
font-weight: bold;
|
||||
margin: 20px 5px 15px 0px;
|
||||
}
|
||||
|
||||
.export-title span:first-child {
|
||||
margin-right: 5px;
|
||||
}
|
||||
|
||||
.select-all-checkbox {
|
||||
margin-top: 10px
|
||||
}
|
||||
|
||||
.export-title {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.other-field-tip {
|
||||
margin-top: 30px;
|
||||
font-size: 10px;
|
||||
color: #9ea0a3;
|
||||
}
|
||||
</style>
|
@ -0,0 +1,111 @@
|
||||
<template>
|
||||
<div>
|
||||
<div class="field-title" v-if="fields && fields.length > 0">
|
||||
<span>{{ title }}</span>
|
||||
<el-checkbox
|
||||
v-model="selectAll"
|
||||
@change="selectAllChange"/>
|
||||
</div>
|
||||
<test-case-export-field-list
|
||||
:fields="fields"
|
||||
@enableChange="enableChange"
|
||||
/>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import TestCaseExportFieldList from "@/business/components/track/case/components/export/TestCaseExportFieldList";
|
||||
|
||||
export default {
|
||||
name: "TestCaseExportFieldSelectItem",
|
||||
components: {TestCaseExportFieldList},
|
||||
props: {
|
||||
fields: Array,
|
||||
title: String,
|
||||
type: String
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
selectAll: false,
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
selectAll() {
|
||||
this.$emit('selectAllChange', this.selectAll);
|
||||
},
|
||||
fields() {
|
||||
this.checkEnable();
|
||||
}
|
||||
},
|
||||
created() {
|
||||
this.checkEnable();
|
||||
},
|
||||
methods: {
|
||||
getExportParam() {
|
||||
return this.fields.filter(item => item.enable);
|
||||
},
|
||||
enableChange(enable) {
|
||||
this.persistenceValues();
|
||||
if (enable) {
|
||||
for (let head of this.fields) {
|
||||
if (!head.enable) {
|
||||
// 单个启用,如果有未启用的则返回
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
// 如果全部都开启了就启用总开关,或者一个关闭了则禁用总开关
|
||||
this.selectAll = enable;
|
||||
},
|
||||
persistenceValues() {
|
||||
// 将勾选情况保存在浏览器
|
||||
let enableKeys = this.fields.filter(i => i.enable)
|
||||
.map(i => i.key);
|
||||
localStorage.setItem(this.type, JSON.stringify(enableKeys));
|
||||
},
|
||||
selectAllChange(value) {
|
||||
this.selectAll = value;
|
||||
this.fields.forEach(i => {
|
||||
i.enable = value;
|
||||
});
|
||||
this.persistenceValues();
|
||||
},
|
||||
checkEnable() {
|
||||
// 获取保存在浏览器的选项值
|
||||
let enableKeys = localStorage.getItem(this.type);
|
||||
if (enableKeys) {
|
||||
enableKeys = JSON.parse(enableKeys);
|
||||
}
|
||||
|
||||
let isSelectAll = true;
|
||||
for (let field of this.fields) {
|
||||
if (enableKeys) {
|
||||
if (enableKeys.indexOf(field.key) > -1) {
|
||||
field.enable = true;
|
||||
} else {
|
||||
field.enable = false;
|
||||
}
|
||||
}
|
||||
if (!field.enable) {
|
||||
isSelectAll = false;
|
||||
}
|
||||
}
|
||||
|
||||
this.selectAllChange(isSelectAll);
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
.field-title {
|
||||
margin-top: 20px;
|
||||
margin-bottom: 10px;
|
||||
font-size: 15px;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.field-title span:first-child {
|
||||
margin-right: 10px;
|
||||
}
|
||||
</style>
|
@ -62,7 +62,7 @@ import NodeEdit from "../common/NodeEdit";
|
||||
import MsNodeTree from "../common/NodeTree";
|
||||
import TestCaseCreate from "@/business/components/track/case/components/TestCaseCreate";
|
||||
import TestCaseImport from "@/business/components/track/case/components/import/TestCaseImport";
|
||||
import TestCaseExport from "@/business/components/track/case/components/TestCaseExport";
|
||||
import TestCaseExport from "@/business/components/track/case/components/export/TestCaseExport";
|
||||
import MsSearchBar from "@/business/components/common/components/search/MsSearchBar";
|
||||
import {buildTree} from "../../api/definition/model/NodeTree";
|
||||
import {buildNodePath} from "@/business/components/api/definition/model/NodeTree";
|
||||
@ -244,8 +244,8 @@ export default {
|
||||
}
|
||||
this.$refs.testCaseExport.open();
|
||||
},
|
||||
exportTestCase(type){
|
||||
this.$emit('exportTestCase',type);
|
||||
exportTestCase(type, param){
|
||||
this.$emit('exportTestCase', type, param);
|
||||
},
|
||||
remove(nodeIds) {
|
||||
this.$post("/case/node/delete", nodeIds, () => {
|
||||
@ -290,6 +290,9 @@ export default {
|
||||
},
|
||||
changeConfirm(isSave) {
|
||||
this.$emit('importChangeConfirm', isSave);
|
||||
},
|
||||
closeExport() {
|
||||
this.$refs.testCaseExport.close();
|
||||
}
|
||||
}
|
||||
};
|
||||
|
@ -1,3 +1,5 @@
|
||||
import test_track from "./track/en-US";
|
||||
|
||||
export default {
|
||||
commons: {
|
||||
project_permission: 'Please add the project permission first',
|
||||
@ -93,6 +95,7 @@ export default {
|
||||
input_password: 'Please enter password',
|
||||
test: 'Test',
|
||||
create_time: 'Created Time',
|
||||
creator: 'Creator',
|
||||
update_user_id: 'Updater ID',
|
||||
update_time: 'Updated Time',
|
||||
delete_time: 'Delete Time',
|
||||
@ -2063,511 +2066,7 @@ export default {
|
||||
please_search: "Please Search",
|
||||
date: "Date"
|
||||
},
|
||||
test_track: {
|
||||
sync_add_api_load: 'Synchronously add associated api and load tests',
|
||||
next: 'Next',
|
||||
total_size: 'Total {0}',
|
||||
related_requirements: 'Related requirements',
|
||||
please_related_requirements: 'Please select the requirements to associate',
|
||||
please_select_the_test_to_associate: "Please select the test to associate",
|
||||
person_responsible: "Person Responsible",
|
||||
test_track: "Track",
|
||||
confirm: "Confirm",
|
||||
cancel: "Cancel",
|
||||
planning_execution: "Planning&Execution",
|
||||
project: "Project",
|
||||
save: "Save",
|
||||
return: "Return",
|
||||
length_less_than: "The length less than",
|
||||
recent_plan: "My recent plan",
|
||||
recent_case: "My recent case",
|
||||
recent_review: "My recent review",
|
||||
pass_rate: "Pass Rate",
|
||||
execution_result: ": Please select the execution result",
|
||||
actual_result: ": The actual result is empty",
|
||||
cancel_relevance_success: "Unlinked successfully",
|
||||
switch_project: "Project",
|
||||
functional_test_case: "Functional Case",
|
||||
api_test_case: "Api Case",
|
||||
ui_test_case: "UI Case",
|
||||
performance_test_case: "Performance Case",
|
||||
scenario_test_case: "Scenario Case",
|
||||
ui_scenario_test_case: "UI Scenario Case",
|
||||
report_statistics: "Report Statistics",
|
||||
sort: 'Sort',
|
||||
demand: {
|
||||
id: 'Demand ID',
|
||||
name: 'Demand Name',
|
||||
batch_relate: 'Bulk Association Requirements',
|
||||
relate_is_null_warn: 'The associated requirement cannot be empty!',
|
||||
relate_name_is_null_warn: 'Requirement name cannot be empty!',
|
||||
third_platform_demand: "Third platform demand",
|
||||
other_demand: "Other demand"
|
||||
},
|
||||
step_model: 'Step Model',
|
||||
automatic_status_update: "Automatic Status Update",
|
||||
case: {
|
||||
list: "List",
|
||||
minder: "Minder",
|
||||
step_info: "Step Info",
|
||||
other_info: "Other Info",
|
||||
step_describe: "Step Describe",
|
||||
step_describe_tip: "Applicable to every step of the test scenario, there are clear test steps, expected results",
|
||||
text_describe: "Text Describe",
|
||||
text_describe_tip: "For simple test scenarios, there are no clear test steps",
|
||||
change_type: "Change Type",
|
||||
minder_create_tip: "failed, unable to create its parent module in minder",
|
||||
minder_issue_delete_tip: "Successfully cancel the defect association",
|
||||
check_select: "Please check the case",
|
||||
export_all_cases: 'Are you sure you want to export all use cases?',
|
||||
minder_tem_node_tip: "Cannot create case {0} under the temporary node",
|
||||
minder_is_module_tip: "{0} is a module and cannot be modified as a use ca",
|
||||
minder_not_module_tip: "Module {0}, cannot be created under a non-module node",
|
||||
minder_all_module_tip: 'All case are virtual modules. Please create use cases in other modules',
|
||||
minder_save_confirm_title: 'Please save the minder',
|
||||
minder_save_confirm_tip: 'The minder is not saved. Are you sure to save?',
|
||||
minder_import_save_confirm_tip: 'Will the minder be refreshed after successful import and confirm to save minder?',
|
||||
input_test_case: 'Please enter the associated case name',
|
||||
test_name: 'TestName',
|
||||
other: '--Other--',
|
||||
test_case: "Case",
|
||||
move: "Move case",
|
||||
case_list: "Test case list",
|
||||
create_case: "Create case",
|
||||
edit_case: "Edit case",
|
||||
view_case: "Test case",
|
||||
no_project: "There is no project in this workspace, please create the project first",
|
||||
priority: "Priority",
|
||||
type: "Type",
|
||||
method: "Method",
|
||||
auto: "Auto",
|
||||
manual: "Manual",
|
||||
create: "Create test case",
|
||||
case_type: "Case Type",
|
||||
name: "Test Case Name",
|
||||
module: "Module",
|
||||
project: 'Project',
|
||||
maintainer: "Maintainer",
|
||||
steps: "Steps",
|
||||
number: "Number",
|
||||
prerequisite: "Prerequisite",
|
||||
step_desc: "Case step",
|
||||
expected_results: "Expected results",
|
||||
input_name: "Please enter name",
|
||||
input_module: "Please select module",
|
||||
input_maintainer: "Please select maintainer",
|
||||
input_priority: "Please select priority",
|
||||
input_type: "Please select type",
|
||||
input_method: "Please select method",
|
||||
input_prerequisite: "Please select prerequisite",
|
||||
input_demand_name: "Please input demand id or name",
|
||||
delete_confirm: "Confirm delete test case",
|
||||
delete: "Delete case",
|
||||
save_create_continue: "Save and create continue",
|
||||
save_add_public: "Save and add public",
|
||||
please_create_project: "No project available, please create the project first",
|
||||
create_module_first: "Please create module first",
|
||||
relate_test: "Relate test",
|
||||
relate_issue: "Relate Issue",
|
||||
demand_name_id: "Demand ID/Name",
|
||||
please_select_relate_test: "Please select the test to associate",
|
||||
relate_test_not_find: 'The associated test does not exist, please check the test case',
|
||||
other_relate_test_not_find: 'Associated test name, please go to the third party platform to execute',
|
||||
batch_handle: 'Batch processing (select {0} items)',
|
||||
batch_update: 'Update the attributes of {0} cases',
|
||||
select_catalog: 'Please select use case catalog',
|
||||
updated_attr_value: 'The updated attribute value',
|
||||
batch_operate: 'Batch operation',
|
||||
please_select_attr: 'Please select attributes',
|
||||
please_select_attr_value: 'Please select the value corresponding to the attribute',
|
||||
batch_edit_case: 'Batch editing',
|
||||
batch_move_case: 'Batch move',
|
||||
batch_copy: 'Batch copy',
|
||||
batch_add_public: 'Batch add public',
|
||||
batch_link_demand: 'Bulk Association Requirements',
|
||||
public_warning: 'The public library configuration is not enabled',
|
||||
generate_dependencies: 'Generate dependencies',
|
||||
generate_dependencies_warning: 'For a better experience, it is recommended to check the data below 100',
|
||||
batch_delete_case: 'Batch delete',
|
||||
batch_unlink: 'Batch Unlink',
|
||||
unlink: 'Unlink',
|
||||
project_name: "Project",
|
||||
status: 'Review Status',
|
||||
status_prepare: 'Prepare',
|
||||
status_running: 'Underway',
|
||||
status_finished: 'Completed',
|
||||
status_pass: 'Pass',
|
||||
status_un_pass: 'UnPass',
|
||||
cancel_relevance_project: "Disassociating the project will also cancel the associated test cases under the project",
|
||||
img_loading_fail: "Image failed to load",
|
||||
pdf_loading_fail: "PDF loading failed",
|
||||
upload_tip: "file size limit[0-500MB]",
|
||||
add_attachment: "Add",
|
||||
attachment: "Attachment",
|
||||
upload_time: "Upload Time",
|
||||
total: "Total Case",
|
||||
node_id: "Node ID",
|
||||
node_path: "Node Path",
|
||||
match_rule: "Test Case Match Rule",
|
||||
import: {
|
||||
import: "Import test case",
|
||||
case_import: "Import test case",
|
||||
case_export: "Export test case",
|
||||
download_template: "Download template",
|
||||
click_upload: "Upload",
|
||||
upload_limit: "Only XLS/XLSX/XMIND files can be uploaded, and no more than 100M",
|
||||
upload_xmind_format: "Upload files can only be .xmind format",
|
||||
upload_xmind: "Only xmind files can be uploaded, and no more than 800",
|
||||
upload_limit_count: "Only one file can be uploaded at a time",
|
||||
upload_limit_format: "Upload files can only be XLS, XLSX format!",
|
||||
upload_limit_size: "Upload file size cannot exceed 100MB!",
|
||||
upload_limit_other_size: "Upload file size cannot exceed",
|
||||
success: "Import success!",
|
||||
importing: "Importing...",
|
||||
excel_title: "Excel ",
|
||||
xmind_title: "Xmind",
|
||||
import_desc: "Import instructions",
|
||||
import_file: "upload files",
|
||||
ignore_error: "Ignore errors ",
|
||||
continue_upload: "Upload continue",
|
||||
import_create: "Import Create",
|
||||
import_update: "Import Update",
|
||||
import_tip1: "The ID is required when the \"Test Case Custom ID\" switch is turned on in the project settings",
|
||||
import_tip2: "ID is required when importing and updating",
|
||||
import_file_tips: "Please upload the file first!",
|
||||
},
|
||||
export: {
|
||||
export: "Export cases",
|
||||
export_tip: "Switch to Case List and check Use Case Export"
|
||||
},
|
||||
case_desc: "Case Desc",
|
||||
passing_rate: 'Case Pass Rate',
|
||||
exists_multiple_prerequisite_node: "Exists multiple precondition node",
|
||||
exists_multiple_remark_node: "Exists multiple remark node",
|
||||
},
|
||||
plan: {
|
||||
test_plan: "Plan",
|
||||
test_plan_id: 'Plan ID',
|
||||
create_plan: "Create test plan",
|
||||
edit_plan: "Edit test plan",
|
||||
plan_name: "Name",
|
||||
plan_project: "Project",
|
||||
related_project: "Related Project",
|
||||
related_tip: "After linking the project, you can add test cases under the linking project to the test plan list",
|
||||
plan_stage: "Stage",
|
||||
follow_people: "Follow",
|
||||
plan_status: "Status",
|
||||
smoke_test: "Smoke test",
|
||||
functional_test: "Functional test",
|
||||
integration_testing: "Integration test",
|
||||
system_test: "System test",
|
||||
regression_test: "Regression test",
|
||||
version_validation: "Version validation",
|
||||
plan_principal: "Principal",
|
||||
input_plan_name: "Please input plan name",
|
||||
input_plan_principal: "Please select principal",
|
||||
input_plan_project: "Please select project",
|
||||
input_related_project: "Please Related project",
|
||||
input_plan_stage: "Please select stage",
|
||||
plan_status_prepare: "Not started",
|
||||
plan_status_running: "Starting",
|
||||
plan_status_finished: "Finished",
|
||||
plan_status_completed: "Completed",
|
||||
plan_status_archived: "Archived",
|
||||
plan_status_trash: "Trashed",
|
||||
planned_start_time: "Start Time",
|
||||
planned_end_time: "End Time",
|
||||
actual_start_time: "Actual Start Time",
|
||||
actual_end_time: "Actual End Time",
|
||||
plan_delete_confirm: "All use cases under this plan will be deleted,confirm delete test plan: ",
|
||||
plan_delete_tip: "The test plan is under way, please confirm and delete it!",
|
||||
plan_delete: "Delete test plan",
|
||||
api_case: "Api case",
|
||||
scenario_case: "Scenario case",
|
||||
execute_result: "Execute Result",
|
||||
execute_time: 'Execute Time',
|
||||
is_api_case_executing: "Api Case Executing",
|
||||
is_scenario_executing: 'Scenario Executing',
|
||||
is_performance_executing: 'Performance Executing',
|
||||
test_plan_test_case_count: "Track Case Count",
|
||||
test_plan_api_case_count: "Api Case Count",
|
||||
test_plan_api_scenario_count: "Scenario Case Count",
|
||||
test_plan_ui_scenario_count: "Ui Scenario Case Count",
|
||||
test_plan_load_case_count: "Load Case Count",
|
||||
test_plan_component_case_count: "Component Case Count",
|
||||
data_name: "Data Name",
|
||||
test_plan_batch_switch: "batch on/off scheduled tasks",
|
||||
batch_update_schedule_enable: 'update the scheduled task status of {0} test plans',
|
||||
batch_update_schedule_enable_alert: 'note: only test plans with scheduled tasks can be updated',
|
||||
next_run_time: 'next running time',
|
||||
schedule_enabled: 'enabled',
|
||||
check_schedule_enabled: 'the data you checked has detected {0} scheduled tasks that can be modified',
|
||||
no_check_schedule_enabled: 'the data you checked does not detect a scheduled task',
|
||||
load_case: {
|
||||
case: "Load Case",
|
||||
execution_status: "Execution status",
|
||||
report: "report",
|
||||
view_report: "View report",
|
||||
unlink_in_bulk: "Unlink in bulk",
|
||||
batch_exec_cases: "Batch execution use cases",
|
||||
exec: "Executing....",
|
||||
error: "Use case execution error, please debug this use case separately!",
|
||||
report_not_found: "Report does not exist",
|
||||
content_empty: "Content empty",
|
||||
}
|
||||
},
|
||||
review: {
|
||||
test_review: "Review",
|
||||
create_review: "Create Review",
|
||||
edit_review: "Edit Review",
|
||||
review_name: "Name",
|
||||
reviewer: "Reviewer",
|
||||
review_project: "Project",
|
||||
review_creator: "Creator",
|
||||
review_follow_people: "Follow",
|
||||
review_status: "Status",
|
||||
related_project: "Related Project",
|
||||
related_tip: "After the project is associated, you can add test cases under the associated project to the review list",
|
||||
end_time: "EndTime",
|
||||
delete: "Delete",
|
||||
input_review_name: "Please enter the name of the review",
|
||||
input_review_project: "Please select the project",
|
||||
input_reviewer: "Please select reviewer",
|
||||
no_link_case: "No associated use cases!",
|
||||
prepare: "Prepare",
|
||||
pass: "Pass",
|
||||
un_pass: "UnPass",
|
||||
comment: "Comment",
|
||||
my_review: "My Review",
|
||||
my_create: "My Create",
|
||||
reviewed_by_me: "Review By Me",
|
||||
creator: "Creator",
|
||||
done: "Commented use cases",
|
||||
result_distribution: "Result Distribution",
|
||||
deadline_cannot_early_tips: "Deadline cannot be earlier than current time!",
|
||||
},
|
||||
comment: {
|
||||
no_comment: "No Comment",
|
||||
send_comment: "Post a comment (Ctrl + Enter to send)",
|
||||
send: "Confirm",
|
||||
description_is_null: "Comment content cannot be empty!",
|
||||
send_success: "Comment successful!",
|
||||
},
|
||||
review_view: {
|
||||
review: "Review",
|
||||
all_case: "All case",
|
||||
start_review: "Start Review",
|
||||
relevance_case: "Relevance Case",
|
||||
last_page: "It's the end!",
|
||||
execute_result: "Result",
|
||||
cannot_edit: "Cannot edit this comment!",
|
||||
cannot_delete: "Cannot delete this comment!",
|
||||
submit_description: "please submit comments first!",
|
||||
},
|
||||
module: {
|
||||
id: 'Module ID',
|
||||
search: "Search module",
|
||||
rename: "Rename",
|
||||
add_submodule: "Add submodule",
|
||||
add_module: "Add module",
|
||||
name: "Name",
|
||||
delete_confirm: "Confirm delete module:",
|
||||
delete_all_resource: "and all submodules and test cases under the module",
|
||||
delete_batch_confirm: "Steps to confirm batch deletion of selected scenarios?",
|
||||
module: "Module",
|
||||
title: "Title",
|
||||
describe: "Describe",
|
||||
status: "Status",
|
||||
current_owner: "Current Owner",
|
||||
creation_time: "Creation time",
|
||||
project_name: "Project"
|
||||
},
|
||||
home: {
|
||||
recent_test: "Recent Test",
|
||||
my_plan: "My Plan",
|
||||
test_rate: "Test Rate",
|
||||
tested_case: "Tested Case",
|
||||
review_progress: "Review Progress",
|
||||
case_count: "Statistics of the number of use cases",
|
||||
relevance_case: "Related Case",
|
||||
case_maintenance: "Use case person responsible distribution",
|
||||
bug_count: "Statistics of remaining defects",
|
||||
case_review: "Use case review",
|
||||
review_rate: "Reviewed",
|
||||
coverage: "Coverage",
|
||||
function_case_count: "Functional Case Count",
|
||||
relevance_case_count: "Related Case Count",
|
||||
serial_number: "Index",
|
||||
test_plan_name: "Plan Name",
|
||||
case_size: "Case Count",
|
||||
bug_size: "Bug Count",
|
||||
passing_rate: "Pass Rate",
|
||||
percentage: "Percentage"
|
||||
},
|
||||
plan_view: {
|
||||
plan: "Plan",
|
||||
relevance_test_case: "Relevance case",
|
||||
cancel_all_relevance: "Unlink all",
|
||||
executor: "Executor",
|
||||
executor_match_rule: "Executor Match Rule",
|
||||
execute_result: "Result",
|
||||
pass: "Pass",
|
||||
not_pass: "UnPass",
|
||||
failure: "Failure",
|
||||
blocking: "Blocking",
|
||||
stop: "Stop",
|
||||
skip: "Skip",
|
||||
actual_result: "Actual result",
|
||||
step_result: "Step result",
|
||||
my_case: "My case",
|
||||
all_case: "All case",
|
||||
pre_case: "The last case",
|
||||
next_case: "The next case",
|
||||
change_execution_results: "Change results",
|
||||
change_executor: "Change executor",
|
||||
select_executor: "Select executor",
|
||||
select_execute_result: "Select execute result",
|
||||
cancel_relevance: "Cancel relevance",
|
||||
confirm_cancel_relevance: "Confirm cancel relevance",
|
||||
select_manipulate: "Select the data you want to manipulate",
|
||||
select_template: "Select template",
|
||||
step: "Step",
|
||||
submit_issues: "Commit issues",
|
||||
operate_step: "Operate step",
|
||||
edit_component: "Edit component",
|
||||
component: "component",
|
||||
base_info: "Base info",
|
||||
mock_info: "Mock service",
|
||||
test_result: "Test result",
|
||||
result_distribution: "Result distribution",
|
||||
custom_component: "Custom",
|
||||
create_report: "Create report",
|
||||
defect_list: "Defect list",
|
||||
view_report: "View report",
|
||||
component_library: "Component library",
|
||||
component_library_tip: "Drag and drop the component from the component library, add to the right, preview the report effect, only one can be added per system component.",
|
||||
delete_component_tip: "Please reserve at least one component",
|
||||
input_template_name: "Input template name",
|
||||
template_special_characters: 'Template name does not support special characters',
|
||||
case_count: "Case count",
|
||||
issues_count: "Issues count",
|
||||
result_statistics: "Result statistics",
|
||||
result_statistics_chart: "Result statistics chart",
|
||||
create_template: "Create template",
|
||||
report_template: "Report template",
|
||||
test_detail: "Test detail",
|
||||
failure_case: "Failure case",
|
||||
export_report: "Export Report",
|
||||
share_report: "Share Report",
|
||||
no_case_relevance: "No related use cases",
|
||||
automatically_update_status: "Auto update status",
|
||||
allow_associated_repetitive_cases: "Repetitive Case",
|
||||
automatically_update_status_tip: "When the interface or performance use case associated with the functional use case is executed in the test plan, the status of the functional use case is automatically updated",
|
||||
allow_associated_repetitive_cases_tip: "Whether to allow the same use case to be associated multiple times in the same test plan",
|
||||
performance_case_count: "Performance Case Count",
|
||||
running: "Running",
|
||||
please_choose_test_case: "please select a test case!",
|
||||
execute_tip: "The step execution result contains a Failed result, and the use case cannot be marked as Passed!"
|
||||
},
|
||||
issue: {
|
||||
issue: "Issue",
|
||||
issue_management: "Issue",
|
||||
platform_status: "Platform Status",
|
||||
issue_resource: "Issue Source",
|
||||
create_issue: "Create Issue",
|
||||
add_issue: "Add Issue",
|
||||
issue_list: "Issue List",
|
||||
search_name: "Search for title",
|
||||
platform_tip: "Integrated defect management platform in the system setting-workspace-service integration can submit defects to the designated defect management platform",
|
||||
input_title: "Please enter title",
|
||||
id: "Issue ID",
|
||||
title: "Issue Title",
|
||||
description: "Issue Describe",
|
||||
status: "Issue Status",
|
||||
platform: "Platform",
|
||||
issue_project: "Project",
|
||||
operate: "Operate",
|
||||
close: "Close",
|
||||
delete: "Delete",
|
||||
title_description_required: "Title and description are required",
|
||||
close_success: "Closed successfully",
|
||||
delete_warning: "The cancellation will affect the statistics related to the test plan. Confirm whether to confirm or not",
|
||||
preview: "Preview",
|
||||
status_new: 'new',
|
||||
status_resolved: 'resolved',
|
||||
status_closed: 'closed',
|
||||
status_active: 'active',
|
||||
status_delete: 'delete',
|
||||
status_in_progress: 'in_progress',
|
||||
status_rejected: 'rejected',
|
||||
status_upcoming: 'upcoming',
|
||||
status_reopened: 'reopened',
|
||||
please_choose_current_owner: "Please choose current owner",
|
||||
tapd_current_owner: "Tapd Current Owner",
|
||||
zentao_bug_build: "Zentao Impact version",
|
||||
zentao_bug_assigned: "Zentao handler",
|
||||
third_party_integrated: "Third-party Platform",
|
||||
use_third_party: "Enable Jira Issue Template",
|
||||
update_third_party_bugs: "Update the defects of third-party platforms",
|
||||
sync_bugs: "Synchronization Issue",
|
||||
sync_complete: "Synchronization complete",
|
||||
issue_sync_tip: "The current project is synchronizing defects, please wait!",
|
||||
save_before_open_comment: "Please save issue before comment",
|
||||
delete_tip: "Confirm Delete Issue:",
|
||||
check_id_exist: "Check",
|
||||
save_project_first: "Please save the project first",
|
||||
tapd_status_new: "New",
|
||||
tapd_status_in_progress: "Acceptance/Processing",
|
||||
tapd_status_reopened: "Opened",
|
||||
tapd_status_rejected: "Refused",
|
||||
tapd_status_verified: "Authenticated",
|
||||
tapd_status_closed: "Closed",
|
||||
tapd_status_resolved: "Resolved",
|
||||
please_choose_platform_status: "Please select platform status",
|
||||
},
|
||||
report: {
|
||||
name: "Test Plan Report",
|
||||
list: {
|
||||
name: "name",
|
||||
test_plan: "Test plan",
|
||||
creator: "Creator",
|
||||
create_time: "Create Time",
|
||||
trigger_mode: "Trigger Mode",
|
||||
run_time: "run time(s)",
|
||||
pass_rate: "pass rate",
|
||||
status: "Status",
|
||||
operation: "Operation",
|
||||
},
|
||||
trigger_mode: {
|
||||
manual: "Manual",
|
||||
automation: "Automation",
|
||||
},
|
||||
overview: "Overview",
|
||||
testing_time: "Testing time",
|
||||
total_number_tests: "Total",
|
||||
exacutive_rate: "Exacutive rate",
|
||||
exacutive_rate_tip: "Use cases executed/all use cases * 100%",
|
||||
passing_rate: "Passing rate",
|
||||
passing_rate_tip: "Execute passed use cases/all use cases * 100%",
|
||||
content: "Content",
|
||||
report_summary: "Summary",
|
||||
analysis_functional: "Analysis Functional",
|
||||
analysis_api: "Analysis Api",
|
||||
analysis_ui: "Analysis Ui",
|
||||
analysis_load: "Analysis Performance",
|
||||
valid_for_24_hours: "Valid for 24 hours",
|
||||
configuration: "Config",
|
||||
share: "Share",
|
||||
template_configuration: "Template configuration",
|
||||
test_result: "Test Result",
|
||||
fail_case: "Fail Case",
|
||||
issue_list: "Issue List",
|
||||
all_case: "All Case",
|
||||
},
|
||||
reporter: 'Reporter',
|
||||
lastmodify: 'Last Modify',
|
||||
sync_to_new_version: "Copy to latest version",
|
||||
},
|
||||
test_track,
|
||||
test_resource_pool: {
|
||||
id: 'Resource Pool ID',
|
||||
type: 'type',
|
||||
|
512
frontend/src/i18n/track/en-US.js
Normal file
512
frontend/src/i18n/track/en-US.js
Normal file
@ -0,0 +1,512 @@
|
||||
export default {
|
||||
sync_add_api_load: 'Synchronously add associated api and load tests',
|
||||
next: 'Next',
|
||||
total_size: 'Total {0}',
|
||||
related_requirements: 'Related requirements',
|
||||
please_related_requirements: 'Please select the requirements to associate',
|
||||
please_select_the_test_to_associate: "Please select the test to associate",
|
||||
person_responsible: "Person Responsible",
|
||||
test_track: "Track",
|
||||
confirm: "Confirm",
|
||||
cancel: "Cancel",
|
||||
planning_execution: "Planning&Execution",
|
||||
project: "Project",
|
||||
save: "Save",
|
||||
return: "Return",
|
||||
length_less_than: "The length less than",
|
||||
recent_plan: "My recent plan",
|
||||
recent_case: "My recent case",
|
||||
recent_review: "My recent review",
|
||||
pass_rate: "Pass Rate",
|
||||
execution_result: ": Please select the execution result",
|
||||
actual_result: ": The actual result is empty",
|
||||
cancel_relevance_success: "Unlinked successfully",
|
||||
switch_project: "Project",
|
||||
functional_test_case: "Functional Case",
|
||||
api_test_case: "Api Case",
|
||||
ui_test_case: "UI Case",
|
||||
performance_test_case: "Performance Case",
|
||||
scenario_test_case: "Scenario Case",
|
||||
ui_scenario_test_case: "UI Scenario Case",
|
||||
report_statistics: "Report Statistics",
|
||||
sort: 'Sort',
|
||||
demand: {
|
||||
id: 'Demand ID',
|
||||
name: 'Demand Name',
|
||||
batch_relate: 'Bulk Association Requirements',
|
||||
relate_is_null_warn: 'The associated requirement cannot be empty!',
|
||||
relate_name_is_null_warn: 'Requirement name cannot be empty!',
|
||||
third_platform_demand: "Third platform demand",
|
||||
other_demand: "Other demand"
|
||||
},
|
||||
step_model: 'Step Model',
|
||||
automatic_status_update: "Automatic Status Update",
|
||||
case: {
|
||||
list: "List",
|
||||
minder: "Minder",
|
||||
step_info: "Step Info",
|
||||
other_info: "Other Info",
|
||||
step_describe: "Step Describe",
|
||||
step_describe_tip: "Applicable to every step of the test scenario, there are clear test steps, expected results",
|
||||
text_describe: "Text Describe",
|
||||
text_describe_tip: "For simple test scenarios, there are no clear test steps",
|
||||
change_type: "Change Type",
|
||||
minder_create_tip: "failed, unable to create its parent module in minder",
|
||||
minder_issue_delete_tip: "Successfully cancel the defect association",
|
||||
check_select: "Please check the case",
|
||||
export_all_cases: 'Are you sure you want to export all use cases?',
|
||||
minder_tem_node_tip: "Cannot create case {0} under the temporary node",
|
||||
minder_is_module_tip: "{0} is a module and cannot be modified as a use ca",
|
||||
minder_not_module_tip: "Module {0}, cannot be created under a non-module node",
|
||||
minder_all_module_tip: 'All case are virtual modules. Please create use cases in other modules',
|
||||
minder_save_confirm_title: 'Please save the minder',
|
||||
minder_save_confirm_tip: 'The minder is not saved. Are you sure to save?',
|
||||
minder_import_save_confirm_tip: 'Will the minder be refreshed after successful import and confirm to save minder?',
|
||||
input_test_case: 'Please enter the associated case name',
|
||||
test_name: 'TestName',
|
||||
other: '--Other--',
|
||||
test_case: "Case",
|
||||
move: "Move case",
|
||||
case_list: "Test case list",
|
||||
create_case: "Create case",
|
||||
edit_case: "Edit case",
|
||||
view_case: "Test case",
|
||||
no_project: "There is no project in this workspace, please create the project first",
|
||||
priority: "Priority",
|
||||
type: "Type",
|
||||
method: "Method",
|
||||
auto: "Auto",
|
||||
manual: "Manual",
|
||||
create: "Create test case",
|
||||
case_type: "Case Type",
|
||||
name: "Test Case Name",
|
||||
module: "Module",
|
||||
project: 'Project',
|
||||
maintainer: "Maintainer",
|
||||
steps: "Steps",
|
||||
number: "Number",
|
||||
prerequisite: "Prerequisite",
|
||||
step_desc: "Case step",
|
||||
expected_results: "Expected results",
|
||||
input_name: "Please enter name",
|
||||
input_module: "Please select module",
|
||||
input_maintainer: "Please select maintainer",
|
||||
input_priority: "Please select priority",
|
||||
input_type: "Please select type",
|
||||
input_method: "Please select method",
|
||||
input_prerequisite: "Please select prerequisite",
|
||||
input_demand_name: "Please input demand id or name",
|
||||
delete_confirm: "Confirm delete test case",
|
||||
delete: "Delete case",
|
||||
save_create_continue: "Save and create continue",
|
||||
save_add_public: "Save and add public",
|
||||
please_create_project: "No project available, please create the project first",
|
||||
create_module_first: "Please create module first",
|
||||
relate_test: "Relate test",
|
||||
relate_issue: "Relate Issue",
|
||||
demand_name_id: "Demand ID/Name",
|
||||
please_select_relate_test: "Please select the test to associate",
|
||||
relate_test_not_find: 'The associated test does not exist, please check the test case',
|
||||
other_relate_test_not_find: 'Associated test name, please go to the third party platform to execute',
|
||||
batch_handle: 'Batch processing (select {0} items)',
|
||||
batch_update: 'Update the attributes of {0} cases',
|
||||
select_catalog: 'Please select use case catalog',
|
||||
updated_attr_value: 'The updated attribute value',
|
||||
batch_operate: 'Batch operation',
|
||||
please_select_attr: 'Please select attributes',
|
||||
please_select_attr_value: 'Please select the value corresponding to the attribute',
|
||||
batch_edit_case: 'Batch editing',
|
||||
batch_move_case: 'Batch move',
|
||||
batch_copy: 'Batch copy',
|
||||
batch_add_public: 'Batch add public',
|
||||
batch_link_demand: 'Bulk Association Requirements',
|
||||
public_warning: 'The public library configuration is not enabled',
|
||||
generate_dependencies: 'Generate dependencies',
|
||||
generate_dependencies_warning: 'For a better experience, it is recommended to check the data below 100',
|
||||
batch_delete_case: 'Batch delete',
|
||||
batch_unlink: 'Batch Unlink',
|
||||
unlink: 'Unlink',
|
||||
project_name: "Project",
|
||||
status: 'Review Status',
|
||||
status_prepare: 'Prepare',
|
||||
status_running: 'Underway',
|
||||
status_finished: 'Completed',
|
||||
status_pass: 'Pass',
|
||||
status_un_pass: 'UnPass',
|
||||
cancel_relevance_project: "Disassociating the project will also cancel the associated test cases under the project",
|
||||
img_loading_fail: "Image failed to load",
|
||||
pdf_loading_fail: "PDF loading failed",
|
||||
upload_tip: "file size limit[0-500MB]",
|
||||
add_attachment: "Add",
|
||||
attachment: "Attachment",
|
||||
upload_time: "Upload Time",
|
||||
total: "Total Case",
|
||||
node_id: "Node ID",
|
||||
node_path: "Node Path",
|
||||
match_rule: "Test Case Match Rule",
|
||||
import: {
|
||||
import: "Import test case",
|
||||
case_import: "Import test case",
|
||||
case_export: "Export test case",
|
||||
download_template: "Download template",
|
||||
click_upload: "Upload",
|
||||
upload_limit: "Only XLS/XLSX/XMIND files can be uploaded, and no more than 100M",
|
||||
upload_xmind_format: "Upload files can only be .xmind format",
|
||||
upload_xmind: "Only xmind files can be uploaded, and no more than 800",
|
||||
upload_limit_count: "Only one file can be uploaded at a time",
|
||||
upload_limit_format: "Upload files can only be XLS, XLSX format!",
|
||||
upload_limit_size: "Upload file size cannot exceed 100MB!",
|
||||
upload_limit_other_size: "Upload file size cannot exceed",
|
||||
success: "Import success!",
|
||||
importing: "Importing...",
|
||||
excel_title: "Excel ",
|
||||
xmind_title: "Xmind",
|
||||
import_desc: "Import instructions",
|
||||
import_file: "upload files",
|
||||
ignore_error: "Ignore errors ",
|
||||
continue_upload: "Upload continue",
|
||||
import_create: "Import Create",
|
||||
import_update: "Import Update",
|
||||
import_tip1: "The ID is required when the \"Test Case Custom ID\" switch is turned on in the project settings",
|
||||
import_tip2: "ID is required when importing and updating",
|
||||
import_file_tips: "Please upload the file first!",
|
||||
import_format: "Import Format",
|
||||
select_import_field: "Select Field",
|
||||
select_import_all_field: "Select All",
|
||||
base_field: "Base Field",
|
||||
custom_field: "Custom Field",
|
||||
other_field: "Other Field",
|
||||
other_field_tip: "Note: For other fields, import is not supported after export",
|
||||
},
|
||||
export: {
|
||||
export: "Export cases",
|
||||
export_tip: "Switch to Case List and check Use Case Export"
|
||||
},
|
||||
case_desc: "Case Desc",
|
||||
passing_rate: 'Case Pass Rate',
|
||||
exists_multiple_prerequisite_node: "Exists multiple precondition node",
|
||||
exists_multiple_remark_node: "Exists multiple remark node",
|
||||
},
|
||||
plan: {
|
||||
test_plan: "Plan",
|
||||
test_plan_id: 'Plan ID',
|
||||
create_plan: "Create test plan",
|
||||
edit_plan: "Edit test plan",
|
||||
plan_name: "Name",
|
||||
plan_project: "Project",
|
||||
related_project: "Related Project",
|
||||
related_tip: "After linking the project, you can add test cases under the linking project to the test plan list",
|
||||
plan_stage: "Stage",
|
||||
follow_people: "Follow",
|
||||
plan_status: "Status",
|
||||
smoke_test: "Smoke test",
|
||||
functional_test: "Functional test",
|
||||
integration_testing: "Integration test",
|
||||
system_test: "System test",
|
||||
regression_test: "Regression test",
|
||||
version_validation: "Version validation",
|
||||
plan_principal: "Principal",
|
||||
input_plan_name: "Please input plan name",
|
||||
input_plan_principal: "Please select principal",
|
||||
input_plan_project: "Please select project",
|
||||
input_related_project: "Please Related project",
|
||||
input_plan_stage: "Please select stage",
|
||||
plan_status_prepare: "Not started",
|
||||
plan_status_running: "Starting",
|
||||
plan_status_finished: "Finished",
|
||||
plan_status_completed: "Completed",
|
||||
plan_status_archived: "Archived",
|
||||
plan_status_trash: "Trashed",
|
||||
planned_start_time: "Start Time",
|
||||
planned_end_time: "End Time",
|
||||
actual_start_time: "Actual Start Time",
|
||||
actual_end_time: "Actual End Time",
|
||||
plan_delete_confirm: "All use cases under this plan will be deleted,confirm delete test plan: ",
|
||||
plan_delete_tip: "The test plan is under way, please confirm and delete it!",
|
||||
plan_delete: "Delete test plan",
|
||||
api_case: "Api case",
|
||||
scenario_case: "Scenario case",
|
||||
execute_result: "Execute Result",
|
||||
execute_time: 'Execute Time',
|
||||
is_api_case_executing: "Api Case Executing",
|
||||
is_scenario_executing: 'Scenario Executing',
|
||||
is_performance_executing: 'Performance Executing',
|
||||
test_plan_test_case_count: "Track Case Count",
|
||||
test_plan_api_case_count: "Api Case Count",
|
||||
test_plan_api_scenario_count: "Scenario Case Count",
|
||||
test_plan_ui_scenario_count: "Ui Scenario Case Count",
|
||||
test_plan_load_case_count: "Load Case Count",
|
||||
test_plan_component_case_count: "Component Case Count",
|
||||
data_name: "Data Name",
|
||||
test_plan_batch_switch: "batch on/off scheduled tasks",
|
||||
batch_update_schedule_enable: 'update the scheduled task status of {0} test plans',
|
||||
batch_update_schedule_enable_alert: 'note: only test plans with scheduled tasks can be updated',
|
||||
next_run_time: 'next running time',
|
||||
schedule_enabled: 'enabled',
|
||||
check_schedule_enabled: 'the data you checked has detected {0} scheduled tasks that can be modified',
|
||||
no_check_schedule_enabled: 'the data you checked does not detect a scheduled task',
|
||||
load_case: {
|
||||
case: "Load Case",
|
||||
execution_status: "Execution status",
|
||||
report: "report",
|
||||
view_report: "View report",
|
||||
unlink_in_bulk: "Unlink in bulk",
|
||||
batch_exec_cases: "Batch execution use cases",
|
||||
exec: "Executing....",
|
||||
error: "Use case execution error, please debug this use case separately!",
|
||||
report_not_found: "Report does not exist",
|
||||
content_empty: "Content empty",
|
||||
}
|
||||
},
|
||||
review: {
|
||||
test_review: "Review",
|
||||
create_review: "Create Review",
|
||||
edit_review: "Edit Review",
|
||||
review_name: "Name",
|
||||
reviewer: "Reviewer",
|
||||
review_project: "Project",
|
||||
review_creator: "Creator",
|
||||
review_follow_people: "Follow",
|
||||
review_status: "Status",
|
||||
related_project: "Related Project",
|
||||
related_tip: "After the project is associated, you can add test cases under the associated project to the review list",
|
||||
end_time: "EndTime",
|
||||
delete: "Delete",
|
||||
input_review_name: "Please enter the name of the review",
|
||||
input_review_project: "Please select the project",
|
||||
input_reviewer: "Please select reviewer",
|
||||
no_link_case: "No associated use cases!",
|
||||
prepare: "Prepare",
|
||||
pass: "Pass",
|
||||
un_pass: "UnPass",
|
||||
comment: "Comment",
|
||||
my_review: "My Review",
|
||||
my_create: "My Create",
|
||||
reviewed_by_me: "Review By Me",
|
||||
creator: "Creator",
|
||||
done: "Commented use cases",
|
||||
result_distribution: "Result Distribution",
|
||||
deadline_cannot_early_tips: "Deadline cannot be earlier than current time!",
|
||||
},
|
||||
comment: {
|
||||
no_comment: "No Comment",
|
||||
send_comment: "Post a comment (Ctrl + Enter to send)",
|
||||
send: "Confirm",
|
||||
description_is_null: "Comment content cannot be empty!",
|
||||
send_success: "Comment successful!",
|
||||
},
|
||||
review_view: {
|
||||
review: "Review",
|
||||
all_case: "All case",
|
||||
start_review: "Start Review",
|
||||
relevance_case: "Relevance Case",
|
||||
last_page: "It's the end!",
|
||||
execute_result: "Result",
|
||||
cannot_edit: "Cannot edit this comment!",
|
||||
cannot_delete: "Cannot delete this comment!",
|
||||
submit_description: "please submit comments first!",
|
||||
},
|
||||
module: {
|
||||
id: 'Module ID',
|
||||
search: "Search module",
|
||||
rename: "Rename",
|
||||
add_submodule: "Add submodule",
|
||||
add_module: "Add module",
|
||||
name: "Name",
|
||||
delete_confirm: "Confirm delete module:",
|
||||
delete_all_resource: "and all submodules and test cases under the module",
|
||||
delete_batch_confirm: "Steps to confirm batch deletion of selected scenarios?",
|
||||
module: "Module",
|
||||
title: "Title",
|
||||
describe: "Describe",
|
||||
status: "Status",
|
||||
current_owner: "Current Owner",
|
||||
creation_time: "Creation time",
|
||||
project_name: "Project"
|
||||
},
|
||||
home: {
|
||||
recent_test: "Recent Test",
|
||||
my_plan: "My Plan",
|
||||
test_rate: "Test Rate",
|
||||
tested_case: "Tested Case",
|
||||
review_progress: "Review Progress",
|
||||
case_count: "Statistics of the number of use cases",
|
||||
relevance_case: "Related Case",
|
||||
case_maintenance: "Use case person responsible distribution",
|
||||
bug_count: "Statistics of remaining defects",
|
||||
case_review: "Use case review",
|
||||
review_rate: "Reviewed",
|
||||
coverage: "Coverage",
|
||||
function_case_count: "Functional Case Count",
|
||||
relevance_case_count: "Related Case Count",
|
||||
serial_number: "Index",
|
||||
test_plan_name: "Plan Name",
|
||||
case_size: "Case Count",
|
||||
bug_size: "Bug Count",
|
||||
passing_rate: "Pass Rate",
|
||||
percentage: "Percentage"
|
||||
},
|
||||
plan_view: {
|
||||
plan: "Plan",
|
||||
relevance_test_case: "Relevance case",
|
||||
cancel_all_relevance: "Unlink all",
|
||||
executor: "Executor",
|
||||
executor_match_rule: "Executor Match Rule",
|
||||
execute_result: "Result",
|
||||
pass: "Pass",
|
||||
not_pass: "UnPass",
|
||||
failure: "Failure",
|
||||
blocking: "Blocking",
|
||||
stop: "Stop",
|
||||
skip: "Skip",
|
||||
actual_result: "Actual result",
|
||||
step_result: "Step result",
|
||||
my_case: "My case",
|
||||
all_case: "All case",
|
||||
pre_case: "The last case",
|
||||
next_case: "The next case",
|
||||
change_execution_results: "Change results",
|
||||
change_executor: "Change executor",
|
||||
select_executor: "Select executor",
|
||||
select_execute_result: "Select execute result",
|
||||
cancel_relevance: "Cancel relevance",
|
||||
confirm_cancel_relevance: "Confirm cancel relevance",
|
||||
select_manipulate: "Select the data you want to manipulate",
|
||||
select_template: "Select template",
|
||||
step: "Step",
|
||||
submit_issues: "Commit issues",
|
||||
operate_step: "Operate step",
|
||||
edit_component: "Edit component",
|
||||
component: "component",
|
||||
base_info: "Base info",
|
||||
mock_info: "Mock service",
|
||||
test_result: "Test result",
|
||||
result_distribution: "Result distribution",
|
||||
custom_component: "Custom",
|
||||
create_report: "Create report",
|
||||
defect_list: "Defect list",
|
||||
view_report: "View report",
|
||||
component_library: "Component library",
|
||||
component_library_tip: "Drag and drop the component from the component library, add to the right, preview the report effect, only one can be added per system component.",
|
||||
delete_component_tip: "Please reserve at least one component",
|
||||
input_template_name: "Input template name",
|
||||
template_special_characters: 'Template name does not support special characters',
|
||||
case_count: "Case count",
|
||||
issues_count: "Issues count",
|
||||
result_statistics: "Result statistics",
|
||||
result_statistics_chart: "Result statistics chart",
|
||||
create_template: "Create template",
|
||||
report_template: "Report template",
|
||||
test_detail: "Test detail",
|
||||
failure_case: "Failure case",
|
||||
export_report: "Export Report",
|
||||
share_report: "Share Report",
|
||||
no_case_relevance: "No related use cases",
|
||||
automatically_update_status: "Auto update status",
|
||||
allow_associated_repetitive_cases: "Repetitive Case",
|
||||
automatically_update_status_tip: "When the interface or performance use case associated with the functional use case is executed in the test plan, the status of the functional use case is automatically updated",
|
||||
allow_associated_repetitive_cases_tip: "Whether to allow the same use case to be associated multiple times in the same test plan",
|
||||
performance_case_count: "Performance Case Count",
|
||||
running: "Running",
|
||||
please_choose_test_case: "please select a test case!",
|
||||
execute_tip: "The step execution result contains a Failed result, and the use case cannot be marked as Passed!"
|
||||
},
|
||||
issue: {
|
||||
issue: "Issue",
|
||||
issue_management: "Issue",
|
||||
platform_status: "Platform Status",
|
||||
issue_resource: "Issue Source",
|
||||
create_issue: "Create Issue",
|
||||
add_issue: "Add Issue",
|
||||
issue_list: "Issue List",
|
||||
search_name: "Search for title",
|
||||
platform_tip: "Integrated defect management platform in the system setting-workspace-service integration can submit defects to the designated defect management platform",
|
||||
input_title: "Please enter title",
|
||||
id: "Issue ID",
|
||||
title: "Issue Title",
|
||||
description: "Issue Describe",
|
||||
status: "Issue Status",
|
||||
platform: "Platform",
|
||||
issue_project: "Project",
|
||||
operate: "Operate",
|
||||
close: "Close",
|
||||
delete: "Delete",
|
||||
title_description_required: "Title and description are required",
|
||||
close_success: "Closed successfully",
|
||||
delete_warning: "The cancellation will affect the statistics related to the test plan. Confirm whether to confirm or not",
|
||||
preview: "Preview",
|
||||
status_new: 'new',
|
||||
status_resolved: 'resolved',
|
||||
status_closed: 'closed',
|
||||
status_active: 'active',
|
||||
status_delete: 'delete',
|
||||
status_in_progress: 'in_progress',
|
||||
status_rejected: 'rejected',
|
||||
status_upcoming: 'upcoming',
|
||||
status_reopened: 'reopened',
|
||||
please_choose_current_owner: "Please choose current owner",
|
||||
tapd_current_owner: "Tapd Current Owner",
|
||||
zentao_bug_build: "Zentao Impact version",
|
||||
zentao_bug_assigned: "Zentao handler",
|
||||
third_party_integrated: "Third-party Platform",
|
||||
use_third_party: "Enable Jira Issue Template",
|
||||
update_third_party_bugs: "Update the defects of third-party platforms",
|
||||
sync_bugs: "Synchronization Issue",
|
||||
sync_complete: "Synchronization complete",
|
||||
issue_sync_tip: "The current project is synchronizing defects, please wait!",
|
||||
save_before_open_comment: "Please save issue before comment",
|
||||
delete_tip: "Confirm Delete Issue:",
|
||||
check_id_exist: "Check",
|
||||
save_project_first: "Please save the project first",
|
||||
tapd_status_new: "New",
|
||||
tapd_status_in_progress: "Acceptance/Processing",
|
||||
tapd_status_reopened: "Opened",
|
||||
tapd_status_rejected: "Refused",
|
||||
tapd_status_verified: "Authenticated",
|
||||
tapd_status_closed: "Closed",
|
||||
tapd_status_resolved: "Resolved",
|
||||
please_choose_platform_status: "Please select platform status",
|
||||
},
|
||||
report: {
|
||||
name: "Test Plan Report",
|
||||
list: {
|
||||
name: "name",
|
||||
test_plan: "Test plan",
|
||||
creator: "Creator",
|
||||
create_time: "Create Time",
|
||||
trigger_mode: "Trigger Mode",
|
||||
run_time: "run time(s)",
|
||||
pass_rate: "pass rate",
|
||||
status: "Status",
|
||||
operation: "Operation",
|
||||
},
|
||||
trigger_mode: {
|
||||
manual: "Manual",
|
||||
automation: "Automation",
|
||||
},
|
||||
overview: "Overview",
|
||||
testing_time: "Testing time",
|
||||
total_number_tests: "Total",
|
||||
exacutive_rate: "Exacutive rate",
|
||||
exacutive_rate_tip: "Use cases executed/all use cases * 100%",
|
||||
passing_rate: "Passing rate",
|
||||
passing_rate_tip: "Execute passed use cases/all use cases * 100%",
|
||||
content: "Content",
|
||||
report_summary: "Summary",
|
||||
analysis_functional: "Analysis Functional",
|
||||
analysis_api: "Analysis Api",
|
||||
analysis_ui: "Analysis Ui",
|
||||
analysis_load: "Analysis Performance",
|
||||
valid_for_24_hours: "Valid for 24 hours",
|
||||
configuration: "Config",
|
||||
share: "Share",
|
||||
template_configuration: "Template configuration",
|
||||
test_result: "Test Result",
|
||||
fail_case: "Fail Case",
|
||||
issue_list: "Issue List",
|
||||
all_case: "All Case",
|
||||
},
|
||||
reporter: 'Reporter',
|
||||
lastmodify: 'Last Modify',
|
||||
sync_to_new_version: "Copy to latest version"
|
||||
};
|
514
frontend/src/i18n/track/zh-CN.js
Normal file
514
frontend/src/i18n/track/zh-CN.js
Normal file
@ -0,0 +1,514 @@
|
||||
export default {
|
||||
sync_add_api_load: '同步添加关联的接口和性能测试',
|
||||
next: '下一条',
|
||||
total_size: '共 {0} 条',
|
||||
related_requirements: '关联需求',
|
||||
please_related_requirements: '请选择要关联的需求',
|
||||
please_select_the_test_to_associate: "请选择需要关联的测试",
|
||||
person_responsible: "责任人",
|
||||
test_track: "测试跟踪",
|
||||
planning_execution: "规划&执行",
|
||||
confirm: "确 定",
|
||||
cancel: "取 消",
|
||||
project: "项目",
|
||||
save: "保 存",
|
||||
return: "返 回",
|
||||
length_less_than: "长度必须小于",
|
||||
recent_plan: "我最近的计划",
|
||||
recent_case: "我最近的用例",
|
||||
recent_review: "我最近的评审",
|
||||
pass_rate: "通过率",
|
||||
execution_result: ": 请选择执行结果",
|
||||
actual_result: ": 实际结果为空",
|
||||
cancel_relevance_success: "取消关联成功",
|
||||
switch_project: "切换项目",
|
||||
functional_test_case: "功能测试用例",
|
||||
api_test_case: "接口测试用例",
|
||||
ui_test_case: "UI 测试用例",
|
||||
performance_test_case: "性能测试用例",
|
||||
scenario_test_case: "场景测试用例",
|
||||
ui_scenario_test_case: "UI 测试用例",
|
||||
report_statistics: "报告统计",
|
||||
sort: '种类',
|
||||
automatic_status_update: "自动状态更新",
|
||||
case: {
|
||||
list: "列表",
|
||||
minder: "脑图",
|
||||
step_info: "步骤信息",
|
||||
other_info: "其他信息",
|
||||
step_describe: "步骤描述",
|
||||
step_describe_tip: "适用于需要每一个步骤进行测试的场景,有明确的测试步骤、预期结果",
|
||||
text_describe: "文本描述",
|
||||
text_describe_tip: "使用于简单的测试场景,没有明确的测试步骤",
|
||||
change_type: "更改类型",
|
||||
minder_create_tip: "失败, 无法在脑图创建其父模块",
|
||||
minder_tem_node_tip: "无法在临时节点{0}下创建用例",
|
||||
minder_is_module_tip: "{0}是模块,不能修改为用例",
|
||||
minder_not_module_tip: "模块{0},不能创建在非模块节点下",
|
||||
minder_all_module_tip: "全部用例为虚拟模块,请在其他模块创建用例",
|
||||
minder_issue_delete_tip: "取消缺陷关联成功",
|
||||
|
||||
minder_save_confirm_title: '请保存脑图',
|
||||
minder_save_confirm_tip: '脑图未保存,确认保存脑图吗?',
|
||||
minder_import_save_confirm_tip: '导入成功后会刷新脑图,确认保存脑图吗?',
|
||||
|
||||
check_select: "请勾选用例",
|
||||
export_all_cases: '确定要导出全部用例吗?',
|
||||
input_test_case: '请输入关联用例名称',
|
||||
test_name: '测试名称',
|
||||
other: "--其他--",
|
||||
test_case: "功能用例",
|
||||
move: "移动用例",
|
||||
case_list: "用例列表",
|
||||
create_case: "创建用例",
|
||||
edit_case: "编辑用例",
|
||||
view_case: "查看用例",
|
||||
no_project: "该工作空间下无项目,请先创建项目",
|
||||
priority: "用例等级",
|
||||
type: "类型",
|
||||
method: "测试方式",
|
||||
auto: "自动",
|
||||
manual: "手动",
|
||||
create: "新建用例",
|
||||
case_type: "用例类型",
|
||||
name: "用例名称",
|
||||
module: "所属模块",
|
||||
project: '所属项目',
|
||||
maintainer: "维护人",
|
||||
steps: "执行步骤",
|
||||
number: "编号",
|
||||
prerequisite: "前置条件",
|
||||
step_desc: "用例步骤",
|
||||
step_model: "编辑模式",
|
||||
expected_results: "预期结果",
|
||||
input_name: "请输入名称",
|
||||
input_module: "请选择模块",
|
||||
input_maintainer: "请选择维护人",
|
||||
input_priority: "请选择用例等级",
|
||||
input_type: "请选择用例类型",
|
||||
input_method: "请选择测试方式",
|
||||
input_prerequisite: "请输入前置条件",
|
||||
input_demand_name: "请输入需求ID或名称",
|
||||
delete_confirm: "确认删除测试用例",
|
||||
delete: "删除用例",
|
||||
save_create_continue: "保存并继续创建",
|
||||
save_add_public: "保存并添加到公共用例库",
|
||||
please_create_project: "暂无项目,请先创建项目",
|
||||
create_module_first: "请先新建模块",
|
||||
relate_test: "关联测试",
|
||||
relate_issue: "关联缺陷",
|
||||
demand_name_id: "需求ID/名称",
|
||||
please_select_relate_test: "请选择要关联的测试",
|
||||
relate_test_not_find: '关联的测试不存在,请检查用例',
|
||||
other_relate_test_not_find: '关联的测试名,请前往第三方平台执行',
|
||||
batch_handle: '批量处理 (选中{0}项)',
|
||||
batch_update: '更新{0}个用例的属性',
|
||||
select_catalog: '请选择用例目录',
|
||||
updated_attr_value: '更新后属性值为',
|
||||
batch_operate: '批量操作',
|
||||
please_select_attr: '请选择属性',
|
||||
please_select_attr_value: '请选择属性对应的值',
|
||||
batch_edit_case: '批量编辑',
|
||||
batch_move_case: '批量移动',
|
||||
batch_delete_case: '批量删除',
|
||||
batch_copy: '批量复制',
|
||||
batch_add_public: '批量添加到公共用例库',
|
||||
batch_link_demand: '批量关联需求',
|
||||
public_warning: '未开启公共用例库配置',
|
||||
generate_dependencies: '生成依赖关系',
|
||||
generate_dependencies_warning: '为了更好的体验,建议勾选一百条以下的数据',
|
||||
batch_unlink: '批量取消关联',
|
||||
unlink: '取消关联',
|
||||
project_name: '所属项目',
|
||||
status: '评审结果',
|
||||
status_prepare: '未开始',
|
||||
status_running: '进行中',
|
||||
status_finished: '已完成',
|
||||
cancel_relevance_project: "取消项目关联会同时取消该项目下已关联的测试用例",
|
||||
img_loading_fail: "图片加载失败",
|
||||
pdf_loading_fail: "PDF加载失败",
|
||||
upload_tip: "文件大小限制[0-500MB]",
|
||||
add_attachment: "添加",
|
||||
attachment: "附件",
|
||||
upload_time: "上传时间",
|
||||
total: "用例总数",
|
||||
node_id: "节点ID",
|
||||
node_path: "节点路径",
|
||||
match_rule: "测试用例匹配规则",
|
||||
import: {
|
||||
import: "导入用例",
|
||||
case_import: "导入测试用例",
|
||||
case_export: "导出测试用例",
|
||||
download_template: "下载模版",
|
||||
click_upload: "点击上传",
|
||||
upload_limit: "只能上传xls/xlsx文件,且不超过100M",
|
||||
upload_xmind: "支持文件类型:.xmind;一次至多导入800 条用例",
|
||||
upload_xmind_format: "上传文件只能是 .xmind 格式",
|
||||
upload_limit_other_size: "上传文件大小不能超过",
|
||||
upload_limit_count: "一次只能上传一个文件",
|
||||
upload_limit_format: "上传文件只能是 xls、xlsx格式!",
|
||||
upload_limit_size: "上传文件大小不能超过 100MB!",
|
||||
success: "导入成功!",
|
||||
importing: "导入中...",
|
||||
excel_title: "表格文件",
|
||||
xmind_title: "思维导图",
|
||||
import_desc: "导入说明",
|
||||
import_file: "上传文件",
|
||||
ignore_error: "忽略错误",
|
||||
continue_upload: "继续上传",
|
||||
import_create: "导入新建",
|
||||
import_update: "导入更新",
|
||||
import_tip1: "项目设置中“测试用例自定义ID” 开关开启时ID为必填项",
|
||||
import_tip2: "导入更新时ID为必填项",
|
||||
import_file_tips: "请先上传文件!",
|
||||
import_format: "导入格式",
|
||||
select_import_field: "选择导出字段",
|
||||
select_import_all_field: "选择所有字段",
|
||||
base_field: "基础字段",
|
||||
custom_field: "自定义字段",
|
||||
other_field: "其他字段",
|
||||
other_field_tip: "注意:其他字段,导出后不支持导入",
|
||||
},
|
||||
export: {
|
||||
export: "导出用例",
|
||||
export_tip: "请切换成用例列表勾选用例导出!"
|
||||
},
|
||||
case_desc: "用例描述",
|
||||
passing_rate: '用例通过率',
|
||||
version: "版本",
|
||||
sync_to_new_version: "复制以下信息到新版本",
|
||||
exists_multiple_prerequisite_node: "下存在多个前置条件",
|
||||
exists_multiple_remark_node: "下存在多个备注",
|
||||
},
|
||||
plan: {
|
||||
test_plan: "测试计划",
|
||||
test_plan_id: '测试计划Id',
|
||||
create_plan: "创建测试计划",
|
||||
edit_plan: "编辑测试计划",
|
||||
plan_name: "计划名称",
|
||||
plan_project: "所属项目",
|
||||
related_project: "关联项目",
|
||||
related_tip: "关联项目后可以添加关联项目下的测试用例到测试计划列表",
|
||||
plan_stage: "测试阶段",
|
||||
follow_people: "关注人",
|
||||
plan_status: "状态",
|
||||
smoke_test: "冒烟测试",
|
||||
functional_test: "功能测试",
|
||||
regression_test: "回归测试",
|
||||
integration_testing: "集成测试",
|
||||
system_test: "系统测试",
|
||||
version_validation: "版本验证",
|
||||
plan_principal: "责任人",
|
||||
input_plan_name: "请输入测试计划名称",
|
||||
input_plan_principal: "请选择负责人",
|
||||
input_plan_project: "请选择所属项目",
|
||||
input_related_project: "请选择关联项目",
|
||||
input_plan_stage: "请选择测试阶段",
|
||||
plan_status_prepare: "未开始",
|
||||
plan_status_running: "进行中",
|
||||
plan_status_finished: "已结束",
|
||||
plan_status_completed: "已完成",
|
||||
plan_status_archived: "已归档",
|
||||
plan_status_trash: "废弃",
|
||||
planned_start_time: "计划开始",
|
||||
planned_end_time: "计划结束",
|
||||
actual_start_time: "实际开始",
|
||||
actual_end_time: "实际结束",
|
||||
plan_delete_confirm: "将删除该测试计划下所有用例,确认删除测试计划: ",
|
||||
plan_delete_tip: "该测试计划正在进行中,请确认再删除!",
|
||||
plan_delete: "删除计划",
|
||||
api_case: "接口测试用例",
|
||||
scenario_case: "场景测试用例",
|
||||
execute_result: "执行结果",
|
||||
execute_time: '执行时间',
|
||||
is_api_case_executing: "是否执行接口用例",
|
||||
is_scenario_executing: '是否执行场景',
|
||||
is_performance_executing: '是否执行性能',
|
||||
test_plan_test_case_count: "功能用例数",
|
||||
test_plan_api_case_count: "接口用例数",
|
||||
test_plan_api_scenario_count: "场景用例数",
|
||||
test_plan_ui_scenario_count: "UI 场景用例数",
|
||||
test_plan_load_case_count: "性能用例数",
|
||||
test_plan_component_case_count: "步骤用例数",
|
||||
data_name: "数据名称",
|
||||
test_plan_batch_switch: "批量开/关定时任务",
|
||||
batch_update_schedule_enable: '更新{0}个测试计划的定时任务状态为',
|
||||
batch_update_schedule_enable_alert: '注意:只能更新已设置了定时任务的测试计划',
|
||||
next_run_time: '下次运行时间',
|
||||
schedule_enabled: '已开启',
|
||||
check_schedule_enabled: '您勾选的数据检测到有{0}条定时任务可以修改',
|
||||
no_check_schedule_enabled: '您勾选的数据没有检测到定时任务',
|
||||
load_case: {
|
||||
case: "性能用例",
|
||||
execution_status: "执行状态",
|
||||
report: "报告",
|
||||
view_report: "查看报告",
|
||||
unlink_in_bulk: "批量取消关联",
|
||||
batch_exec_cases: "批量执行用例",
|
||||
exec: "正在执行....",
|
||||
error: "用例执行错误,请单独调试该用例!",
|
||||
report_not_found: "报告不存在",
|
||||
content_empty: "内容为空",
|
||||
}
|
||||
},
|
||||
demand: {
|
||||
id: '需求ID',
|
||||
name: '需求名称',
|
||||
batch_relate: '批量关联需求',
|
||||
relate_is_null_warn: '关联需求不能为空!',
|
||||
relate_name_is_null_warn: '需求名称不能为空!',
|
||||
third_platform_demand: "三方平台需求",
|
||||
other_demand: "其他需求"
|
||||
},
|
||||
step_model: '步骤模型',
|
||||
review: {
|
||||
test_review: "用例评审",
|
||||
create_review: "创建用例评审",
|
||||
edit_review: "编辑用例评审",
|
||||
review_name: "评审名称",
|
||||
reviewer: "评审人",
|
||||
review_project: "所属项目",
|
||||
related_project: "关联项目",
|
||||
related_tip: "关联项目后可以添加关联项目下的测试用例到评审列表",
|
||||
review_creator: "发起人",
|
||||
review_follow_people: "关注人",
|
||||
review_status: "状态",
|
||||
end_time: "截止时间",
|
||||
delete: "删除评审",
|
||||
input_review_name: "请输入评审名称",
|
||||
input_review_project: "请选择所属项目",
|
||||
input_reviewer: "请选择评审人",
|
||||
no_link_case: "没有关联用例!",
|
||||
pass: "通过",
|
||||
un_pass: "未通过",
|
||||
prepare: '未评审',
|
||||
comment: "评论",
|
||||
my_review: "我的评审",
|
||||
my_create: "我创建的评审",
|
||||
reviewed_by_me: "待我评审",
|
||||
creator: "创建人",
|
||||
done: "已评用例",
|
||||
result_distribution: "结果分布",
|
||||
deadline_cannot_early_tips: "截止时间不能早于当前时间!",
|
||||
},
|
||||
comment: {
|
||||
no_comment: "暂无评论",
|
||||
send_comment: "发表评论(Ctrl+Enter发送)",
|
||||
send: "确定",
|
||||
description_is_null: "评论内容不能为空!",
|
||||
send_success: "评论成功!",
|
||||
cannot_edit: "无法编辑此评论!",
|
||||
cannot_delete: "无法删除此评论!",
|
||||
submit_description: "请先提交评论!",
|
||||
},
|
||||
review_view: {
|
||||
review: "评审",
|
||||
all_case: "全部用例",
|
||||
start_review: "开始评审",
|
||||
relevance_case: "关联用例",
|
||||
last_page: "已经到底了!",
|
||||
execute_result: "评审结果",
|
||||
},
|
||||
module: {
|
||||
id: '模块ID',
|
||||
search: "搜索模块",
|
||||
rename: "重命名",
|
||||
add_submodule: "添加子模块",
|
||||
add_module: "添加模块",
|
||||
name: "模块名称",
|
||||
delete_confirm: "确认删除模块: ",
|
||||
delete_batch_confirm: "确认批量删除勾选的场景步骤?",
|
||||
delete_all_resource: "以及模块下所有子模块和测试用例",
|
||||
module: "模块",
|
||||
title: "标题",
|
||||
status: "状态",
|
||||
describe: "描述",
|
||||
current_owner: "处理人",
|
||||
creation_time: "创建时间",
|
||||
project_name: "所属项目"
|
||||
},
|
||||
home: {
|
||||
recent_test: "最近测试",
|
||||
my_plan: "我的计划",
|
||||
test_rate: "测试进度",
|
||||
tested_case: "已测用例",
|
||||
review_progress: "评审进度",
|
||||
case_count: "用例数量统计",
|
||||
relevance_case: "关联用例数量统计",
|
||||
case_maintenance: "用例责任人分布",
|
||||
bug_count: "遗留缺陷统计",
|
||||
case_review: "用例评审",
|
||||
review_rate: "评审率",
|
||||
coverage: "覆盖率",
|
||||
function_case_count: "功能用例数",
|
||||
relevance_case_count: "关联用例数",
|
||||
serial_number: "序号",
|
||||
test_plan_name: "测试计划名称",
|
||||
case_size: "用例数",
|
||||
bug_size: "缺陷数",
|
||||
passing_rate: "通过率",
|
||||
percentage: "占比"
|
||||
},
|
||||
plan_view: {
|
||||
plan: "计划",
|
||||
relevance_test_case: "关联测试用例",
|
||||
cancel_all_relevance: "取消全部关联",
|
||||
executor: "执行人",
|
||||
executor_match_rule: "执行者匹配规则",
|
||||
execute_result: "执行结果",
|
||||
pass: "通过",
|
||||
not_pass: "不通过",
|
||||
failure: "失败",
|
||||
blocking: "阻塞",
|
||||
stop: "停止",
|
||||
skip: "跳过",
|
||||
actual_result: "实际结果",
|
||||
step_result: "步骤执行结果",
|
||||
my_case: "我的用例",
|
||||
all_case: "全部用例",
|
||||
pre_case: "上一条用例",
|
||||
next_case: "下一条用例",
|
||||
change_execution_results: "更改执行结果",
|
||||
change_executor: "更改执行人",
|
||||
select_executor: "请选择执行人",
|
||||
select_execute_result: "选择执行结果",
|
||||
cancel_relevance: "取消用例关联",
|
||||
confirm_cancel_relevance: "确认取消关联",
|
||||
select_manipulate: "请选择需要操作的数据",
|
||||
select_template: "选择模版",
|
||||
step: "步骤",
|
||||
submit_issues: "提缺陷",
|
||||
operate_step: "操作步骤",
|
||||
edit_component: "编辑组件",
|
||||
component: "组件",
|
||||
base_info: "基础信息",
|
||||
mock_info: "Mock服务",
|
||||
test_result: "测试结果",
|
||||
result_distribution: "测试结果分布",
|
||||
custom_component: "自定义模块",
|
||||
defect_list: "缺陷列表",
|
||||
create_report: "创建测试报告",
|
||||
view_report: "查看测试报告",
|
||||
component_library: "组件库",
|
||||
component_library_tip: "拖拽组件库中组件,添加至右侧,预览报告效果,每个系统组件只能添加一个。",
|
||||
delete_component_tip: "请至少保留一个组件",
|
||||
input_template_name: "输入模版名称",
|
||||
template_special_characters: '模版名称不支持特殊字符',
|
||||
case_count: "用例数",
|
||||
issues_count: "缺陷数",
|
||||
result_statistics: "测试结果统计",
|
||||
result_statistics_chart: "测试结果统计图",
|
||||
create_template: "新建模版",
|
||||
report_template: "测试报告模版",
|
||||
test_detail: "测试详情",
|
||||
failure_case: "失败用例",
|
||||
export_report: "导出报告",
|
||||
share_report: "分享报告",
|
||||
no_case_relevance: "没有关联用例",
|
||||
automatically_update_status: "自动更新状态",
|
||||
automatically_update_status_tip: "当功能用例关联的接口或性能用例在测试计划执行后,自动更新功能用例的状态",
|
||||
allow_associated_repetitive_cases: "允许关联重复用例",
|
||||
allow_associated_repetitive_cases_tip: "是否允许同一个测试计划中多次关联相同用例",
|
||||
performance_case_count: "性能测试用例数",
|
||||
running: "运行中",
|
||||
please_choose_test_case: "请选择测试用例!",
|
||||
execute_tip: "步骤执行结果中含有 失败 结果,无法标记该用例为 通过 状态!"
|
||||
},
|
||||
issue: {
|
||||
issue: "缺陷",
|
||||
issue_management: "缺陷管理",
|
||||
platform_status: "平台状态",
|
||||
issue_resource: "缺陷来源",
|
||||
create_issue: "创建缺陷",
|
||||
add_issue: "添加缺陷",
|
||||
issue_list: "缺陷列表",
|
||||
search_name: "根据标题搜索",
|
||||
platform_tip: "在系统设置-工作空间-服务集成中集成缺陷管理平台可以提交缺陷到指定缺陷管理平台",
|
||||
input_title: "请输入标题",
|
||||
id: "缺陷ID",
|
||||
title: "缺陷标题",
|
||||
description: "缺陷描述",
|
||||
status: "缺陷状态",
|
||||
issue_project: "所属项目",
|
||||
platform: "平台",
|
||||
operate: "操作",
|
||||
close: "关闭缺陷",
|
||||
delete: "删除缺陷",
|
||||
title_description_required: "标题和描述必填",
|
||||
close_success: "关闭成功",
|
||||
delete_warning: "解除会影响测试计划相关统计,是否确认",
|
||||
preview: "预览",
|
||||
status_new: '新建',
|
||||
status_resolved: '已解决',
|
||||
status_closed: '已关闭',
|
||||
status_active: '激活',
|
||||
status_delete: '删除',
|
||||
status_in_progress: '接受/处理',
|
||||
status_rejected: '拒绝',
|
||||
status_upcoming: '待办',
|
||||
status_reopened: '重新打开',
|
||||
please_choose_current_owner: "请选择处理人",
|
||||
tapd_current_owner: "Tapd 处理人",
|
||||
zentao_bug_build: "禅道 影响版本",
|
||||
zentao_bug_assigned: "禅道 处理人",
|
||||
third_party_integrated: "集成第三方平台",
|
||||
use_third_party: "使用 Jira 缺陷模板",
|
||||
update_third_party_bugs: "更新第三方平台的缺陷",
|
||||
sync_bugs: "同步缺陷",
|
||||
sync_complete: "同步完成",
|
||||
issue_sync_tip: "当前项目正在同步缺陷, 请稍等!",
|
||||
save_before_open_comment: "请先保存缺陷再添加评论",
|
||||
delete_tip: "确认删除缺陷:",
|
||||
check_id_exist: "检查",
|
||||
save_project_first: "请先保存项目",
|
||||
tapd_status_new: "新",
|
||||
tapd_status_in_progress: "接受/处理",
|
||||
tapd_status_reopened: "重新打开",
|
||||
tapd_status_rejected: "已拒绝",
|
||||
tapd_status_verified: "已验证",
|
||||
tapd_status_closed: "已关闭",
|
||||
tapd_status_resolved: "已解决",
|
||||
please_choose_platform_status: "请选择平台状态"
|
||||
},
|
||||
report: {
|
||||
name: "测试计划报告",
|
||||
list: {
|
||||
name: "名称",
|
||||
test_plan: "测试计划名称",
|
||||
creator: "创建人",
|
||||
create_time: "创建时间",
|
||||
trigger_mode: "触发方式",
|
||||
run_time: "运行耗时(s)",
|
||||
pass_rate: "成功率",
|
||||
status: "状态",
|
||||
operation: "操作",
|
||||
},
|
||||
trigger_mode: {
|
||||
manual: "手动触发",
|
||||
automation: "自动触发",
|
||||
},
|
||||
overview: "概览",
|
||||
testing_time: "测试时间",
|
||||
total_number_tests: "测试总数",
|
||||
exacutive_rate: "执行率",
|
||||
exacutive_rate_tip: "执行过的用例/所有用例 * 100%",
|
||||
passing_rate: "通过率",
|
||||
passing_rate_tip: "执行通过用例/所有用例 * 100%",
|
||||
content: "目录",
|
||||
report_summary: "报告总结",
|
||||
analysis_functional: "功能用例统计分析",
|
||||
analysis_api: "接口用例统计分析",
|
||||
analysis_ui: "UI 用例统计分析",
|
||||
analysis_load: "性能用例统计分析",
|
||||
valid_for_24_hours: "24小时有效",
|
||||
configuration: "配置",
|
||||
share: "分享",
|
||||
template_configuration: "模板配置",
|
||||
test_result: "测试结果",
|
||||
fail_case: "失败用例",
|
||||
issue_list: "缺陷列表",
|
||||
all_case: "所有用例",
|
||||
},
|
||||
reporter: '报告人',
|
||||
lastmodify: '最后更改'
|
||||
};
|
514
frontend/src/i18n/track/zh-TW.js
Normal file
514
frontend/src/i18n/track/zh-TW.js
Normal file
@ -0,0 +1,514 @@
|
||||
export default {
|
||||
sync_add_api_load: '同步添加關聯的接口和性能測試',
|
||||
next: '下一條',
|
||||
total_size: '共 {0} 條',
|
||||
related_requirements: '關聯需求',
|
||||
please_related_requirements: '請選擇要關聯的需求',
|
||||
please_select_the_test_to_associate: "請選擇需要關聯的測試",
|
||||
person_responsible: "責任人",
|
||||
test_track: "測試跟蹤",
|
||||
planning_execution: "規劃&執行",
|
||||
confirm: "確 定",
|
||||
cancel: "取 消",
|
||||
project: "項目",
|
||||
save: "保 存",
|
||||
return: "返 回",
|
||||
length_less_than: "長度必須小於",
|
||||
recent_plan: "我最近的計劃",
|
||||
recent_case: "我最近的用例",
|
||||
recent_review: "我最近的評審",
|
||||
pass_rate: "通過率",
|
||||
execution_result: ": 請選擇執行結果",
|
||||
actual_result: ": 實際結果為空",
|
||||
cancel_relevance_success: "取消關聯成功",
|
||||
switch_project: "切換項目",
|
||||
functional_test_case: "功能測試用例",
|
||||
api_test_case: "接口測試用例",
|
||||
ui_test_case: "UI 測試用例",
|
||||
performance_test_case: "性能測試用例",
|
||||
scenario_test_case: "場景測試用例",
|
||||
ui_scenario_test_case: "UI 測試用例",
|
||||
report_statistics: "報告統計",
|
||||
sort: '種類',
|
||||
automatic_status_update: "自動狀態更新",
|
||||
case: {
|
||||
list: "列錶",
|
||||
minder: "腦圖",
|
||||
step_info: "步驟信息",
|
||||
other_info: "其他信息",
|
||||
step_describe: "步驟描述",
|
||||
step_describe_tip: "適用於需要每一個步驟進行測試的場景,有明確的測試步驟、預期結果",
|
||||
text_describe: "文本描述",
|
||||
text_describe_tip: "使用於簡單的測試場景,沒有明確的測試步驟",
|
||||
change_type: "更改類型",
|
||||
minder_create_tip: "失敗, 無法在腦圖創建其父模塊",
|
||||
minder_tem_node_tip: "無法在臨時節點{0}下創建用例",
|
||||
minder_is_module_tip: "{0}是模塊,不能修改為用例",
|
||||
minder_not_module_tip: "模塊{0},不能創建在非模塊節點下",
|
||||
minder_all_module_tip: "全部用例為虛擬模塊,請在其他模塊創建用例",
|
||||
minder_issue_delete_tip: "取消缺陷關聯成功",
|
||||
|
||||
minder_save_confirm_title: '請保存腦圖',
|
||||
minder_save_confirm_tip: '腦圖未保存,確認保存腦圖嗎?',
|
||||
minder_import_save_confirm_tip: '導入成功後會刷新腦圖,確認保存腦圖嗎?',
|
||||
|
||||
check_select: "請勾選用例",
|
||||
export_all_cases: '確定要導出全部用例嗎?',
|
||||
input_test_case: '請輸入關聯用例名稱',
|
||||
test_name: '測試名稱',
|
||||
other: "--其他--",
|
||||
test_case: "功能用例",
|
||||
move: "移動用例",
|
||||
case_list: "用例列錶",
|
||||
create_case: "創建用例",
|
||||
edit_case: "編輯用例",
|
||||
view_case: "查看用例",
|
||||
no_project: "該工作空間下無項目,請先創建項目",
|
||||
priority: "用例等級",
|
||||
type: "類型",
|
||||
method: "測試方式",
|
||||
auto: "自動",
|
||||
manual: "手動",
|
||||
create: "新建用例",
|
||||
case_type: "用例類型",
|
||||
name: "用例名稱",
|
||||
module: "所屬模塊",
|
||||
project: '所屬項目',
|
||||
maintainer: "維護人",
|
||||
steps: "執行步驟",
|
||||
number: "編號",
|
||||
prerequisite: "前置條件",
|
||||
step_desc: "用例步驟",
|
||||
step_model: "編輯模式",
|
||||
expected_results: "預期結果",
|
||||
input_name: "請輸入名稱",
|
||||
input_module: "請選擇模塊",
|
||||
input_maintainer: "請選擇維護人",
|
||||
input_priority: "請選擇用例等級",
|
||||
input_type: "請選擇用例類型",
|
||||
input_method: "請選擇測試方式",
|
||||
input_prerequisite: "請輸入前置條件",
|
||||
input_demand_name: "請輸入需求ID或名稱",
|
||||
delete_confirm: "確認刪除測試用例",
|
||||
delete: "刪除用例",
|
||||
save_create_continue: "保存併繼續創建",
|
||||
save_add_public: "保存併添加到公共用例庫",
|
||||
please_create_project: "暫無項目,請先創建項目",
|
||||
create_module_first: "請先新建模塊",
|
||||
relate_test: "關聯測試",
|
||||
relate_issue: "關聯缺陷",
|
||||
demand_name_id: "需求ID/名稱",
|
||||
please_select_relate_test: "請選擇要關聯的測試",
|
||||
relate_test_not_find: '關聯的測試不存在,請檢查用例',
|
||||
other_relate_test_not_find: '關聯的測試名,請前往第三方平臺執行',
|
||||
batch_handle: '批量處理 (選中{0}項)',
|
||||
batch_update: '更新{0}個用例的屬性',
|
||||
select_catalog: '請選擇用例目錄',
|
||||
updated_attr_value: '更新後屬性值為',
|
||||
batch_operate: '批量操作',
|
||||
please_select_attr: '請選擇屬性',
|
||||
please_select_attr_value: '請選擇屬性對應的值',
|
||||
batch_edit_case: '批量編輯',
|
||||
batch_move_case: '批量移動',
|
||||
batch_delete_case: '批量刪除',
|
||||
batch_copy: '批量復制',
|
||||
batch_add_public: '批量添加到公共用例庫',
|
||||
batch_link_demand: '批量關聯需求',
|
||||
public_warning: '未開啟公共用例庫配置',
|
||||
generate_dependencies: '生成依賴關繫',
|
||||
generate_dependencies_warning: '為了更好的體驗,建議勾選一百條以下的數據',
|
||||
batch_unlink: '批量取消關聯',
|
||||
unlink: '取消關聯',
|
||||
project_name: '所屬項目',
|
||||
status: '評審結果',
|
||||
status_prepare: '未開始',
|
||||
status_running: '進行中',
|
||||
status_finished: '已完成',
|
||||
cancel_relevance_project: "取消項目關聯會同時取消該項目下已關聯的測試用例",
|
||||
img_loading_fail: "圖片加載失敗",
|
||||
pdf_loading_fail: "PDF加載失敗",
|
||||
upload_tip: "文件大小限制[0-500MB]",
|
||||
add_attachment: "添加",
|
||||
attachment: "附件",
|
||||
upload_time: "上傳時間",
|
||||
total: "用例總數",
|
||||
node_id: "節點ID",
|
||||
node_path: "節點路徑",
|
||||
match_rule: "測試用例匹配規則",
|
||||
import: {
|
||||
import: "導入用例",
|
||||
case_import: "導入測試用例",
|
||||
case_export: "導出測試用例",
|
||||
download_template: "下載模版",
|
||||
click_upload: "點擊上傳",
|
||||
upload_limit: "只能上傳xls/xlsx文件,且不超過100M",
|
||||
upload_xmind: "支持文件類型:.xmind;一次至多導入800 條用例",
|
||||
upload_xmind_format: "上傳文件只能是 .xmind 格式",
|
||||
upload_limit_other_size: "上傳文件大小不能超過",
|
||||
upload_limit_count: "一次只能上傳一個文件",
|
||||
upload_limit_format: "上傳文件只能是 xls、xlsx格式!",
|
||||
upload_limit_size: "上傳文件大小不能超過 100MB!",
|
||||
success: "導入成功!",
|
||||
importing: "導入中...",
|
||||
excel_title: "錶格文件",
|
||||
xmind_title: "思維導圖",
|
||||
import_desc: "導入說明",
|
||||
import_file: "上傳文件",
|
||||
ignore_error: "忽略錯誤",
|
||||
continue_upload: "繼續上傳",
|
||||
import_create: "導入新建",
|
||||
import_update: "導入更新",
|
||||
import_tip1: "項目設置中“測試用例自定義ID” 開關開啟時ID為必填項",
|
||||
import_tip2: "導入更新時ID為必填項",
|
||||
import_file_tips: "請先上傳文件!",
|
||||
import_format: "導入格式",
|
||||
select_import_field: "選擇導出字段",
|
||||
select_import_all_field: "選擇所有字段",
|
||||
base_field: "基礎字段",
|
||||
custom_field: "自定義字段",
|
||||
other_field: "其他字段",
|
||||
other_field_tip: "註意:其他字段,導出後不支持導入",
|
||||
},
|
||||
export: {
|
||||
export: "導出用例",
|
||||
export_tip: "請切換成用例列錶勾選用例導出!"
|
||||
},
|
||||
case_desc: "用例描述",
|
||||
passing_rate: '用例通過率',
|
||||
version: "版本",
|
||||
sync_to_new_version: "復制以下信息到新版本",
|
||||
exists_multiple_prerequisite_node: "下存在多個前置條件",
|
||||
exists_multiple_remark_node: "下存在多個備註",
|
||||
},
|
||||
plan: {
|
||||
test_plan: "測試計劃",
|
||||
test_plan_id: '測試計劃Id',
|
||||
create_plan: "創建測試計劃",
|
||||
edit_plan: "編輯測試計劃",
|
||||
plan_name: "計劃名稱",
|
||||
plan_project: "所屬項目",
|
||||
related_project: "關聯項目",
|
||||
related_tip: "關聯項目後可以添加關聯項目下的測試用例到測試計劃列錶",
|
||||
plan_stage: "測試階段",
|
||||
follow_people: "關註人",
|
||||
plan_status: "狀態",
|
||||
smoke_test: "冒煙測試",
|
||||
functional_test: "功能測試",
|
||||
regression_test: "回歸測試",
|
||||
integration_testing: "集成測試",
|
||||
system_test: "繫統測試",
|
||||
version_validation: "版本驗證",
|
||||
plan_principal: "責任人",
|
||||
input_plan_name: "請輸入測試計劃名稱",
|
||||
input_plan_principal: "請選擇負責人",
|
||||
input_plan_project: "請選擇所屬項目",
|
||||
input_related_project: "請選擇關聯項目",
|
||||
input_plan_stage: "請選擇測試階段",
|
||||
plan_status_prepare: "未開始",
|
||||
plan_status_running: "進行中",
|
||||
plan_status_finished: "已結束",
|
||||
plan_status_completed: "已完成",
|
||||
plan_status_archived: "已歸檔",
|
||||
plan_status_trash: "廢棄",
|
||||
planned_start_time: "計劃開始",
|
||||
planned_end_time: "計劃結束",
|
||||
actual_start_time: "實際開始",
|
||||
actual_end_time: "實際結束",
|
||||
plan_delete_confirm: "將刪除該測試計劃下所有用例,確認刪除測試計劃: ",
|
||||
plan_delete_tip: "該測試計劃正在進行中,請確認再刪除!",
|
||||
plan_delete: "刪除計劃",
|
||||
api_case: "接口測試用例",
|
||||
scenario_case: "場景測試用例",
|
||||
execute_result: "執行結果",
|
||||
execute_time: '執行時間',
|
||||
is_api_case_executing: "是否執行接口用例",
|
||||
is_scenario_executing: '是否執行場景',
|
||||
is_performance_executing: '是否執行性能',
|
||||
test_plan_test_case_count: "功能用例數",
|
||||
test_plan_api_case_count: "接口用例數",
|
||||
test_plan_api_scenario_count: "場景用例數",
|
||||
test_plan_ui_scenario_count: "UI 場景用例數",
|
||||
test_plan_load_case_count: "性能用例數",
|
||||
test_plan_component_case_count: "步驟用例數",
|
||||
data_name: "數據名稱",
|
||||
test_plan_batch_switch: "批量開/關定時任務",
|
||||
batch_update_schedule_enable: '更新{0}個測試計劃的定時任務狀態為',
|
||||
batch_update_schedule_enable_alert: '註意:只能更新已設置了定時任務的測試計劃',
|
||||
next_run_time: '下次運行時間',
|
||||
schedule_enabled: '已開啟',
|
||||
check_schedule_enabled: '您勾選的數據檢測到有{0}條定時任務可以修改',
|
||||
no_check_schedule_enabled: '您勾選的數據沒有檢測到定時任務',
|
||||
load_case: {
|
||||
case: "性能用例",
|
||||
execution_status: "執行狀態",
|
||||
report: "報告",
|
||||
view_report: "查看報告",
|
||||
unlink_in_bulk: "批量取消關聯",
|
||||
batch_exec_cases: "批量執行用例",
|
||||
exec: "正在執行....",
|
||||
error: "用例執行錯誤,請單獨調試該用例!",
|
||||
report_not_found: "報告不存在",
|
||||
content_empty: "內容為空",
|
||||
}
|
||||
},
|
||||
demand: {
|
||||
id: '需求ID',
|
||||
name: '需求名稱',
|
||||
batch_relate: '批量關聯需求',
|
||||
relate_is_null_warn: '關聯需求不能為空!',
|
||||
relate_name_is_null_warn: '需求名稱不能為空!',
|
||||
third_platform_demand: "三方平臺需求",
|
||||
other_demand: "其他需求"
|
||||
},
|
||||
step_model: '步驟模型',
|
||||
review: {
|
||||
test_review: "用例評審",
|
||||
create_review: "創建用例評審",
|
||||
edit_review: "編輯用例評審",
|
||||
review_name: "評審名稱",
|
||||
reviewer: "評審人",
|
||||
review_project: "所屬項目",
|
||||
related_project: "關聯項目",
|
||||
related_tip: "關聯項目後可以添加關聯項目下的測試用例到評審列錶",
|
||||
review_creator: "發起人",
|
||||
review_follow_people: "關註人",
|
||||
review_status: "狀態",
|
||||
end_time: "截止時間",
|
||||
delete: "刪除評審",
|
||||
input_review_name: "請輸入評審名稱",
|
||||
input_review_project: "請選擇所屬項目",
|
||||
input_reviewer: "請選擇評審人",
|
||||
no_link_case: "沒有關聯用例!",
|
||||
pass: "通過",
|
||||
un_pass: "未通過",
|
||||
prepare: '未評審',
|
||||
comment: "評論",
|
||||
my_review: "我的評審",
|
||||
my_create: "我創建的評審",
|
||||
reviewed_by_me: "待我評審",
|
||||
creator: "創建人",
|
||||
done: "已評用例",
|
||||
result_distribution: "結果分佈",
|
||||
deadline_cannot_early_tips: "截止時間不能早於當前時間!",
|
||||
},
|
||||
comment: {
|
||||
no_comment: "暫無評論",
|
||||
send_comment: "發錶評論(Ctrl+Enter發送)",
|
||||
send: "確定",
|
||||
description_is_null: "評論內容不能為空!",
|
||||
send_success: "評論成功!",
|
||||
cannot_edit: "無法編輯此評論!",
|
||||
cannot_delete: "無法刪除此評論!",
|
||||
submit_description: "請先提交評論!",
|
||||
},
|
||||
review_view: {
|
||||
review: "評審",
|
||||
all_case: "全部用例",
|
||||
start_review: "開始評審",
|
||||
relevance_case: "關聯用例",
|
||||
last_page: "已經到底了!",
|
||||
execute_result: "評審結果",
|
||||
},
|
||||
module: {
|
||||
id: '模塊ID',
|
||||
search: "搜索模塊",
|
||||
rename: "重命名",
|
||||
add_submodule: "添加子模塊",
|
||||
add_module: "添加模塊",
|
||||
name: "模塊名稱",
|
||||
delete_confirm: "確認刪除模塊: ",
|
||||
delete_batch_confirm: "確認批量刪除勾選的場景步驟?",
|
||||
delete_all_resource: "以及模塊下所有子模塊和測試用例",
|
||||
module: "模塊",
|
||||
title: "標題",
|
||||
status: "狀態",
|
||||
describe: "描述",
|
||||
current_owner: "處理人",
|
||||
creation_time: "創建時間",
|
||||
project_name: "所屬項目"
|
||||
},
|
||||
home: {
|
||||
recent_test: "最近測試",
|
||||
my_plan: "我的計劃",
|
||||
test_rate: "測試進度",
|
||||
tested_case: "已測用例",
|
||||
review_progress: "評審進度",
|
||||
case_count: "用例數量統計",
|
||||
relevance_case: "關聯用例數量統計",
|
||||
case_maintenance: "用例責任人分佈",
|
||||
bug_count: "遺留缺陷統計",
|
||||
case_review: "用例評審",
|
||||
review_rate: "評審率",
|
||||
coverage: "覆蓋率",
|
||||
function_case_count: "功能用例數",
|
||||
relevance_case_count: "關聯用例數",
|
||||
serial_number: "序號",
|
||||
test_plan_name: "測試計劃名稱",
|
||||
case_size: "用例數",
|
||||
bug_size: "缺陷數",
|
||||
passing_rate: "通過率",
|
||||
percentage: "佔比"
|
||||
},
|
||||
plan_view: {
|
||||
plan: "計劃",
|
||||
relevance_test_case: "關聯測試用例",
|
||||
cancel_all_relevance: "取消全部關聯",
|
||||
executor: "執行人",
|
||||
executor_match_rule: "執行者匹配規則",
|
||||
execute_result: "執行結果",
|
||||
pass: "通過",
|
||||
not_pass: "不通過",
|
||||
failure: "失敗",
|
||||
blocking: "阻塞",
|
||||
stop: "停止",
|
||||
skip: "跳過",
|
||||
actual_result: "實際結果",
|
||||
step_result: "步驟執行結果",
|
||||
my_case: "我的用例",
|
||||
all_case: "全部用例",
|
||||
pre_case: "上一條用例",
|
||||
next_case: "下一條用例",
|
||||
change_execution_results: "更改執行結果",
|
||||
change_executor: "更改執行人",
|
||||
select_executor: "請選擇執行人",
|
||||
select_execute_result: "選擇執行結果",
|
||||
cancel_relevance: "取消用例關聯",
|
||||
confirm_cancel_relevance: "確認取消關聯",
|
||||
select_manipulate: "請選擇需要操作的數據",
|
||||
select_template: "選擇模版",
|
||||
step: "步驟",
|
||||
submit_issues: "提缺陷",
|
||||
operate_step: "操作步驟",
|
||||
edit_component: "編輯組件",
|
||||
component: "組件",
|
||||
base_info: "基礎信息",
|
||||
mock_info: "Mock服務",
|
||||
test_result: "測試結果",
|
||||
result_distribution: "測試結果分佈",
|
||||
custom_component: "自定義模塊",
|
||||
defect_list: "缺陷列錶",
|
||||
create_report: "創建測試報告",
|
||||
view_report: "查看測試報告",
|
||||
component_library: "組件庫",
|
||||
component_library_tip: "拖拽組件庫中組件,添加至右側,預覽報告效果,每個繫統組件只能添加一個。",
|
||||
delete_component_tip: "請至少保留一個組件",
|
||||
input_template_name: "輸入模版名稱",
|
||||
template_special_characters: '模版名稱不支持特殊字符',
|
||||
case_count: "用例數",
|
||||
issues_count: "缺陷數",
|
||||
result_statistics: "測試結果統計",
|
||||
result_statistics_chart: "測試結果統計圖",
|
||||
create_template: "新建模版",
|
||||
report_template: "測試報告模版",
|
||||
test_detail: "測試詳情",
|
||||
failure_case: "失敗用例",
|
||||
export_report: "導出報告",
|
||||
share_report: "分享報告",
|
||||
no_case_relevance: "沒有關聯用例",
|
||||
automatically_update_status: "自動更新狀態",
|
||||
automatically_update_status_tip: "當功能用例關聯的接口或性能用例在測試計劃執行後,自動更新功能用例的狀態",
|
||||
allow_associated_repetitive_cases: "允許關聯重復用例",
|
||||
allow_associated_repetitive_cases_tip: "是否允許同一個測試計劃中多次關聯相同用例",
|
||||
performance_case_count: "性能測試用例數",
|
||||
running: "運行中",
|
||||
please_choose_test_case: "請選擇測試用例!",
|
||||
execute_tip: "步驟執行結果中含有 失敗 結果,無法標記該用例為 通過 狀態!"
|
||||
},
|
||||
issue: {
|
||||
issue: "缺陷",
|
||||
issue_management: "缺陷管理",
|
||||
platform_status: "平臺狀態",
|
||||
issue_resource: "缺陷來源",
|
||||
create_issue: "創建缺陷",
|
||||
add_issue: "添加缺陷",
|
||||
issue_list: "缺陷列錶",
|
||||
search_name: "根據標題搜索",
|
||||
platform_tip: "在繫統設置-工作空間-服務集成中集成缺陷管理平臺可以提交缺陷到指定缺陷管理平臺",
|
||||
input_title: "請輸入標題",
|
||||
id: "缺陷ID",
|
||||
title: "缺陷標題",
|
||||
description: "缺陷描述",
|
||||
status: "缺陷狀態",
|
||||
issue_project: "所屬項目",
|
||||
platform: "平臺",
|
||||
operate: "操作",
|
||||
close: "關閉缺陷",
|
||||
delete: "刪除缺陷",
|
||||
title_description_required: "標題和描述必填",
|
||||
close_success: "關閉成功",
|
||||
delete_warning: "解除會影響測試計劃相關統計,是否確認",
|
||||
preview: "預覽",
|
||||
status_new: '新建',
|
||||
status_resolved: '已解決',
|
||||
status_closed: '已關閉',
|
||||
status_active: '激活',
|
||||
status_delete: '刪除',
|
||||
status_in_progress: '接受/處理',
|
||||
status_rejected: '拒絕',
|
||||
status_upcoming: '待辦',
|
||||
status_reopened: '重新打開',
|
||||
please_choose_current_owner: "請選擇處理人",
|
||||
tapd_current_owner: "Tapd 處理人",
|
||||
zentao_bug_build: "禪道 影響版本",
|
||||
zentao_bug_assigned: "禪道 處理人",
|
||||
third_party_integrated: "集成第三方平臺",
|
||||
use_third_party: "使用 Jira 缺陷模闆",
|
||||
update_third_party_bugs: "更新第三方平臺的缺陷",
|
||||
sync_bugs: "同步缺陷",
|
||||
sync_complete: "同步完成",
|
||||
issue_sync_tip: "當前項目正在同步缺陷, 請稍等!",
|
||||
save_before_open_comment: "請先保存缺陷再添加評論",
|
||||
delete_tip: "確認刪除缺陷:",
|
||||
check_id_exist: "檢查",
|
||||
save_project_first: "請先保存項目",
|
||||
tapd_status_new: "新",
|
||||
tapd_status_in_progress: "接受/處理",
|
||||
tapd_status_reopened: "重新打開",
|
||||
tapd_status_rejected: "已拒絕",
|
||||
tapd_status_verified: "已驗證",
|
||||
tapd_status_closed: "已關閉",
|
||||
tapd_status_resolved: "已解決",
|
||||
please_choose_platform_status: "請選擇平臺狀態"
|
||||
},
|
||||
report: {
|
||||
name: "測試計劃報告",
|
||||
list: {
|
||||
name: "名稱",
|
||||
test_plan: "測試計劃名稱",
|
||||
creator: "創建人",
|
||||
create_time: "創建時間",
|
||||
trigger_mode: "觸發方式",
|
||||
run_time: "運行耗時(s)",
|
||||
pass_rate: "成功率",
|
||||
status: "狀態",
|
||||
operation: "操作",
|
||||
},
|
||||
trigger_mode: {
|
||||
manual: "手動觸發",
|
||||
automation: "自動觸發",
|
||||
},
|
||||
overview: "概覽",
|
||||
testing_time: "測試時間",
|
||||
total_number_tests: "測試總數",
|
||||
exacutive_rate: "執行率",
|
||||
exacutive_rate_tip: "執行過的用例/所有用例 * 100%",
|
||||
passing_rate: "通過率",
|
||||
passing_rate_tip: "執行通過用例/所有用例 * 100%",
|
||||
content: "目錄",
|
||||
report_summary: "報告總結",
|
||||
analysis_functional: "功能用例統計分析",
|
||||
analysis_api: "接口用例統計分析",
|
||||
analysis_ui: "UI 用例統計分析",
|
||||
analysis_load: "性能用例統計分析",
|
||||
valid_for_24_hours: "24小時有效",
|
||||
configuration: "配置",
|
||||
share: "分享",
|
||||
template_configuration: "模闆配置",
|
||||
test_result: "測試結果",
|
||||
fail_case: "失敗用例",
|
||||
issue_list: "缺陷列錶",
|
||||
all_case: "所有用例",
|
||||
},
|
||||
reporter: '報告人',
|
||||
lastmodify: '最後更改'
|
||||
};
|
@ -1,3 +1,5 @@
|
||||
import test_track from "./track/zh-CN";
|
||||
|
||||
export default {
|
||||
commons: {
|
||||
project_permission: '请先添加该项目权限',
|
||||
@ -94,6 +96,7 @@ export default {
|
||||
input_password: '请输入密码',
|
||||
test: '测试',
|
||||
create_time: '创建时间',
|
||||
creator: '创建人',
|
||||
update_user_id: '更新人ID',
|
||||
update_time: '更新时间',
|
||||
delete_time: '删除时间',
|
||||
@ -2071,512 +2074,7 @@ export default {
|
||||
please_search: "请搜索",
|
||||
date: "日期"
|
||||
},
|
||||
test_track: {
|
||||
sync_add_api_load: '同步添加关联的接口和性能测试',
|
||||
next: '下一条',
|
||||
total_size: '共 {0} 条',
|
||||
related_requirements: '关联需求',
|
||||
please_related_requirements: '请选择要关联的需求',
|
||||
please_select_the_test_to_associate: "请选择需要关联的测试",
|
||||
person_responsible: "责任人",
|
||||
test_track: "测试跟踪",
|
||||
planning_execution: "规划&执行",
|
||||
confirm: "确 定",
|
||||
cancel: "取 消",
|
||||
project: "项目",
|
||||
save: "保 存",
|
||||
return: "返 回",
|
||||
length_less_than: "长度必须小于",
|
||||
recent_plan: "我最近的计划",
|
||||
recent_case: "我最近的用例",
|
||||
recent_review: "我最近的评审",
|
||||
pass_rate: "通过率",
|
||||
execution_result: ": 请选择执行结果",
|
||||
actual_result: ": 实际结果为空",
|
||||
cancel_relevance_success: "取消关联成功",
|
||||
switch_project: "切换项目",
|
||||
functional_test_case: "功能测试用例",
|
||||
api_test_case: "接口测试用例",
|
||||
ui_test_case: "UI 测试用例",
|
||||
performance_test_case: "性能测试用例",
|
||||
scenario_test_case: "场景测试用例",
|
||||
ui_scenario_test_case: "UI 测试用例",
|
||||
report_statistics: "报告统计",
|
||||
sort: '种类',
|
||||
automatic_status_update: "自动状态更新",
|
||||
case: {
|
||||
list: "列表",
|
||||
minder: "脑图",
|
||||
step_info: "步骤信息",
|
||||
other_info: "其他信息",
|
||||
step_describe: "步骤描述",
|
||||
step_describe_tip: "适用于需要每一个步骤进行测试的场景,有明确的测试步骤、预期结果",
|
||||
text_describe: "文本描述",
|
||||
text_describe_tip: "使用于简单的测试场景,没有明确的测试步骤",
|
||||
change_type: "更改类型",
|
||||
minder_create_tip: "失败, 无法在脑图创建其父模块",
|
||||
minder_tem_node_tip: "无法在临时节点{0}下创建用例",
|
||||
minder_is_module_tip: "{0}是模块,不能修改为用例",
|
||||
minder_not_module_tip: "模块{0},不能创建在非模块节点下",
|
||||
minder_all_module_tip: "全部用例为虚拟模块,请在其他模块创建用例",
|
||||
minder_issue_delete_tip: "取消缺陷关联成功",
|
||||
|
||||
minder_save_confirm_title: '请保存脑图',
|
||||
minder_save_confirm_tip: '脑图未保存,确认保存脑图吗?',
|
||||
minder_import_save_confirm_tip: '导入成功后会刷新脑图,确认保存脑图吗?',
|
||||
|
||||
check_select: "请勾选用例",
|
||||
export_all_cases: '确定要导出全部用例吗?',
|
||||
input_test_case: '请输入关联用例名称',
|
||||
test_name: '测试名称',
|
||||
other: "--其他--",
|
||||
test_case: "功能用例",
|
||||
move: "移动用例",
|
||||
case_list: "用例列表",
|
||||
create_case: "创建用例",
|
||||
edit_case: "编辑用例",
|
||||
view_case: "查看用例",
|
||||
no_project: "该工作空间下无项目,请先创建项目",
|
||||
priority: "用例等级",
|
||||
type: "类型",
|
||||
method: "测试方式",
|
||||
auto: "自动",
|
||||
manual: "手动",
|
||||
create: "新建用例",
|
||||
case_type: "用例类型",
|
||||
name: "用例名称",
|
||||
module: "所属模块",
|
||||
project: '所属项目',
|
||||
maintainer: "维护人",
|
||||
steps: "执行步骤",
|
||||
number: "编号",
|
||||
prerequisite: "前置条件",
|
||||
step_desc: "用例步骤",
|
||||
expected_results: "预期结果",
|
||||
input_name: "请输入名称",
|
||||
input_module: "请选择模块",
|
||||
input_maintainer: "请选择维护人",
|
||||
input_priority: "请选择用例等级",
|
||||
input_type: "请选择用例类型",
|
||||
input_method: "请选择测试方式",
|
||||
input_prerequisite: "请输入前置条件",
|
||||
input_demand_name: "请输入需求ID或名称",
|
||||
delete_confirm: "确认删除测试用例",
|
||||
delete: "删除用例",
|
||||
save_create_continue: "保存并继续创建",
|
||||
save_add_public: "保存并添加到公共用例库",
|
||||
please_create_project: "暂无项目,请先创建项目",
|
||||
create_module_first: "请先新建模块",
|
||||
relate_test: "关联测试",
|
||||
relate_issue: "关联缺陷",
|
||||
demand_name_id: "需求ID/名称",
|
||||
please_select_relate_test: "请选择要关联的测试",
|
||||
relate_test_not_find: '关联的测试不存在,请检查用例',
|
||||
other_relate_test_not_find: '关联的测试名,请前往第三方平台执行',
|
||||
batch_handle: '批量处理 (选中{0}项)',
|
||||
batch_update: '更新{0}个用例的属性',
|
||||
select_catalog: '请选择用例目录',
|
||||
updated_attr_value: '更新后属性值为',
|
||||
batch_operate: '批量操作',
|
||||
please_select_attr: '请选择属性',
|
||||
please_select_attr_value: '请选择属性对应的值',
|
||||
batch_edit_case: '批量编辑',
|
||||
batch_move_case: '批量移动',
|
||||
batch_delete_case: '批量删除',
|
||||
batch_copy: '批量复制',
|
||||
batch_add_public: '批量添加到公共用例库',
|
||||
batch_link_demand: '批量关联需求',
|
||||
public_warning: '未开启公共用例库配置',
|
||||
generate_dependencies: '生成依赖关系',
|
||||
generate_dependencies_warning: '为了更好的体验,建议勾选一百条以下的数据',
|
||||
batch_unlink: '批量取消关联',
|
||||
unlink: '取消关联',
|
||||
project_name: '所属项目',
|
||||
status: '评审结果',
|
||||
status_prepare: '未开始',
|
||||
status_running: '进行中',
|
||||
status_finished: '已完成',
|
||||
cancel_relevance_project: "取消项目关联会同时取消该项目下已关联的测试用例",
|
||||
img_loading_fail: "图片加载失败",
|
||||
pdf_loading_fail: "PDF加载失败",
|
||||
upload_tip: "文件大小限制[0-500MB]",
|
||||
add_attachment: "添加",
|
||||
attachment: "附件",
|
||||
upload_time: "上传时间",
|
||||
total: "用例总数",
|
||||
node_id: "节点ID",
|
||||
node_path: "节点路径",
|
||||
match_rule: "测试用例匹配规则",
|
||||
import: {
|
||||
import: "导入用例",
|
||||
case_import: "导入测试用例",
|
||||
case_export: "导出测试用例",
|
||||
download_template: "下载模版",
|
||||
click_upload: "点击上传",
|
||||
upload_limit: "只能上传xls/xlsx文件,且不超过100M",
|
||||
upload_xmind: "支持文件类型:.xmind;一次至多导入800 条用例",
|
||||
upload_xmind_format: "上传文件只能是 .xmind 格式",
|
||||
upload_limit_other_size: "上传文件大小不能超过",
|
||||
upload_limit_count: "一次只能上传一个文件",
|
||||
upload_limit_format: "上传文件只能是 xls、xlsx格式!",
|
||||
upload_limit_size: "上传文件大小不能超过 100MB!",
|
||||
success: "导入成功!",
|
||||
importing: "导入中...",
|
||||
excel_title: "表格文件",
|
||||
xmind_title: "思维导图",
|
||||
import_desc: "导入说明",
|
||||
import_file: "上传文件",
|
||||
ignore_error: "忽略错误",
|
||||
continue_upload: "继续上传",
|
||||
import_create: "导入新建",
|
||||
import_update: "导入更新",
|
||||
import_tip1: "项目设置中“测试用例自定义ID” 开关开启时ID为必填项",
|
||||
import_tip2: "导入更新时ID为必填项",
|
||||
import_file_tips: "请先上传文件!",
|
||||
},
|
||||
export: {
|
||||
export: "导出用例",
|
||||
export_tip: "请切换成用例列表勾选用例导出!"
|
||||
},
|
||||
case_desc: "用例描述",
|
||||
passing_rate: '用例通过率',
|
||||
version: "版本",
|
||||
sync_to_new_version: "复制以下信息到新版本",
|
||||
exists_multiple_prerequisite_node: "下存在多个前置条件",
|
||||
exists_multiple_remark_node: "下存在多个备注",
|
||||
},
|
||||
plan: {
|
||||
test_plan: "测试计划",
|
||||
test_plan_id: '测试计划Id',
|
||||
create_plan: "创建测试计划",
|
||||
edit_plan: "编辑测试计划",
|
||||
plan_name: "计划名称",
|
||||
plan_project: "所属项目",
|
||||
related_project: "关联项目",
|
||||
related_tip: "关联项目后可以添加关联项目下的测试用例到测试计划列表",
|
||||
plan_stage: "测试阶段",
|
||||
follow_people: "关注人",
|
||||
plan_status: "状态",
|
||||
smoke_test: "冒烟测试",
|
||||
functional_test: "功能测试",
|
||||
regression_test: "回归测试",
|
||||
integration_testing: "集成测试",
|
||||
system_test: "系统测试",
|
||||
version_validation: "版本验证",
|
||||
plan_principal: "责任人",
|
||||
input_plan_name: "请输入测试计划名称",
|
||||
input_plan_principal: "请选择负责人",
|
||||
input_plan_project: "请选择所属项目",
|
||||
input_related_project: "请选择关联项目",
|
||||
input_plan_stage: "请选择测试阶段",
|
||||
plan_status_prepare: "未开始",
|
||||
plan_status_running: "进行中",
|
||||
plan_status_finished: "已结束",
|
||||
plan_status_completed: "已完成",
|
||||
plan_status_archived: "已归档",
|
||||
plan_status_trash: "废弃",
|
||||
planned_start_time: "计划开始",
|
||||
planned_end_time: "计划结束",
|
||||
actual_start_time: "实际开始",
|
||||
actual_end_time: "实际结束",
|
||||
plan_delete_confirm: "将删除该测试计划下所有用例,确认删除测试计划: ",
|
||||
plan_delete_tip: "该测试计划正在进行中,请确认再删除!",
|
||||
plan_delete: "删除计划",
|
||||
api_case: "接口测试用例",
|
||||
scenario_case: "场景测试用例",
|
||||
execute_result: "执行结果",
|
||||
execute_time: '执行时间',
|
||||
is_api_case_executing: "是否执行接口用例",
|
||||
is_scenario_executing: '是否执行场景',
|
||||
is_performance_executing: '是否执行性能',
|
||||
test_plan_test_case_count: "功能用例数",
|
||||
test_plan_api_case_count: "接口用例数",
|
||||
test_plan_api_scenario_count: "场景用例数",
|
||||
test_plan_ui_scenario_count: "UI 场景用例数",
|
||||
test_plan_load_case_count: "性能用例数",
|
||||
test_plan_component_case_count: "步骤用例数",
|
||||
data_name: "数据名称",
|
||||
test_plan_batch_switch: "批量开/关定时任务",
|
||||
batch_update_schedule_enable: '更新{0}个测试计划的定时任务状态为',
|
||||
batch_update_schedule_enable_alert: '注意:只能更新已设置了定时任务的测试计划',
|
||||
next_run_time: '下次运行时间',
|
||||
schedule_enabled: '已开启',
|
||||
check_schedule_enabled: '您勾选的数据检测到有{0}条定时任务可以修改',
|
||||
no_check_schedule_enabled: '您勾选的数据没有检测到定时任务',
|
||||
load_case: {
|
||||
case: "性能用例",
|
||||
execution_status: "执行状态",
|
||||
report: "报告",
|
||||
view_report: "查看报告",
|
||||
unlink_in_bulk: "批量取消关联",
|
||||
batch_exec_cases: "批量执行用例",
|
||||
exec: "正在执行....",
|
||||
error: "用例执行错误,请单独调试该用例!",
|
||||
report_not_found: "报告不存在",
|
||||
content_empty: "内容为空",
|
||||
}
|
||||
},
|
||||
demand: {
|
||||
id: '需求ID',
|
||||
name: '需求名称',
|
||||
batch_relate: '批量关联需求',
|
||||
relate_is_null_warn: '关联需求不能为空!',
|
||||
relate_name_is_null_warn: '需求名称不能为空!',
|
||||
third_platform_demand: "三方平台需求",
|
||||
other_demand: "其他需求"
|
||||
},
|
||||
step_model: '步骤模型',
|
||||
review: {
|
||||
test_review: "用例评审",
|
||||
create_review: "创建用例评审",
|
||||
edit_review: "编辑用例评审",
|
||||
review_name: "评审名称",
|
||||
reviewer: "评审人",
|
||||
review_project: "所属项目",
|
||||
related_project: "关联项目",
|
||||
related_tip: "关联项目后可以添加关联项目下的测试用例到评审列表",
|
||||
review_creator: "发起人",
|
||||
review_follow_people: "关注人",
|
||||
review_status: "状态",
|
||||
end_time: "截止时间",
|
||||
delete: "删除评审",
|
||||
input_review_name: "请输入评审名称",
|
||||
input_review_project: "请选择所属项目",
|
||||
input_reviewer: "请选择评审人",
|
||||
no_link_case: "没有关联用例!",
|
||||
pass: "通过",
|
||||
un_pass: "未通过",
|
||||
prepare: '未评审',
|
||||
comment: "评论",
|
||||
my_review: "我的评审",
|
||||
my_create: "我创建的评审",
|
||||
reviewed_by_me: "待我评审",
|
||||
creator: "创建人",
|
||||
done: "已评用例",
|
||||
result_distribution: "结果分布",
|
||||
deadline_cannot_early_tips: "截止时间不能早于当前时间!",
|
||||
},
|
||||
comment: {
|
||||
no_comment: "暂无评论",
|
||||
send_comment: "发表评论(Ctrl+Enter发送)",
|
||||
send: "确定",
|
||||
description_is_null: "评论内容不能为空!",
|
||||
send_success: "评论成功!",
|
||||
cannot_edit: "无法编辑此评论!",
|
||||
cannot_delete: "无法删除此评论!",
|
||||
submit_description: "请先提交评论!",
|
||||
},
|
||||
review_view: {
|
||||
review: "评审",
|
||||
all_case: "全部用例",
|
||||
start_review: "开始评审",
|
||||
relevance_case: "关联用例",
|
||||
last_page: "已经到底了!",
|
||||
execute_result: "评审结果",
|
||||
},
|
||||
module: {
|
||||
id: '模块ID',
|
||||
search: "搜索模块",
|
||||
rename: "重命名",
|
||||
add_submodule: "添加子模块",
|
||||
add_module: "添加模块",
|
||||
name: "模块名称",
|
||||
delete_confirm: "确认删除模块: ",
|
||||
delete_batch_confirm: "确认批量删除勾选的场景步骤?",
|
||||
delete_all_resource: "以及模块下所有子模块和测试用例",
|
||||
module: "模块",
|
||||
title: "标题",
|
||||
status: "状态",
|
||||
describe: "描述",
|
||||
current_owner: "处理人",
|
||||
creation_time: "创建时间",
|
||||
project_name: "所属项目"
|
||||
},
|
||||
home: {
|
||||
recent_test: "最近测试",
|
||||
my_plan: "我的计划",
|
||||
test_rate: "测试进度",
|
||||
tested_case: "已测用例",
|
||||
review_progress: "评审进度",
|
||||
case_count: "用例数量统计",
|
||||
relevance_case: "关联用例数量统计",
|
||||
case_maintenance: "用例责任人分布",
|
||||
bug_count: "遗留缺陷统计",
|
||||
case_review: "用例评审",
|
||||
review_rate: "评审率",
|
||||
coverage: "覆盖率",
|
||||
function_case_count: "功能用例数",
|
||||
relevance_case_count: "关联用例数",
|
||||
serial_number: "序号",
|
||||
test_plan_name: "测试计划名称",
|
||||
case_size: "用例数",
|
||||
bug_size: "缺陷数",
|
||||
passing_rate: "通过率",
|
||||
percentage: "占比"
|
||||
},
|
||||
plan_view: {
|
||||
plan: "计划",
|
||||
relevance_test_case: "关联测试用例",
|
||||
cancel_all_relevance: "取消全部关联",
|
||||
executor: "执行人",
|
||||
executor_match_rule: "执行者匹配规则",
|
||||
execute_result: "执行结果",
|
||||
pass: "通过",
|
||||
not_pass: "不通过",
|
||||
failure: "失败",
|
||||
blocking: "阻塞",
|
||||
stop: "停止",
|
||||
skip: "跳过",
|
||||
actual_result: "实际结果",
|
||||
step_result: "步骤执行结果",
|
||||
my_case: "我的用例",
|
||||
all_case: "全部用例",
|
||||
pre_case: "上一条用例",
|
||||
next_case: "下一条用例",
|
||||
change_execution_results: "更改执行结果",
|
||||
change_executor: "更改执行人",
|
||||
select_executor: "请选择执行人",
|
||||
select_execute_result: "选择执行结果",
|
||||
cancel_relevance: "取消用例关联",
|
||||
confirm_cancel_relevance: "确认取消关联",
|
||||
select_manipulate: "请选择需要操作的数据",
|
||||
select_template: "选择模版",
|
||||
step: "步骤",
|
||||
submit_issues: "提缺陷",
|
||||
operate_step: "操作步骤",
|
||||
edit_component: "编辑组件",
|
||||
component: "组件",
|
||||
base_info: "基础信息",
|
||||
mock_info: "Mock服务",
|
||||
test_result: "测试结果",
|
||||
result_distribution: "测试结果分布",
|
||||
custom_component: "自定义模块",
|
||||
defect_list: "缺陷列表",
|
||||
create_report: "创建测试报告",
|
||||
view_report: "查看测试报告",
|
||||
component_library: "组件库",
|
||||
component_library_tip: "拖拽组件库中组件,添加至右侧,预览报告效果,每个系统组件只能添加一个。",
|
||||
delete_component_tip: "请至少保留一个组件",
|
||||
input_template_name: "输入模版名称",
|
||||
template_special_characters: '模版名称不支持特殊字符',
|
||||
case_count: "用例数",
|
||||
issues_count: "缺陷数",
|
||||
result_statistics: "测试结果统计",
|
||||
result_statistics_chart: "测试结果统计图",
|
||||
create_template: "新建模版",
|
||||
report_template: "测试报告模版",
|
||||
test_detail: "测试详情",
|
||||
failure_case: "失败用例",
|
||||
export_report: "导出报告",
|
||||
share_report: "分享报告",
|
||||
no_case_relevance: "没有关联用例",
|
||||
automatically_update_status: "自动更新状态",
|
||||
automatically_update_status_tip: "当功能用例关联的接口或性能用例在测试计划执行后,自动更新功能用例的状态",
|
||||
allow_associated_repetitive_cases: "允许关联重复用例",
|
||||
allow_associated_repetitive_cases_tip: "是否允许同一个测试计划中多次关联相同用例",
|
||||
performance_case_count: "性能测试用例数",
|
||||
running: "运行中",
|
||||
please_choose_test_case: "请选择测试用例!",
|
||||
execute_tip: "步骤执行结果中含有 失败 结果,无法标记该用例为 通过 状态!"
|
||||
},
|
||||
issue: {
|
||||
issue: "缺陷",
|
||||
issue_management: "缺陷管理",
|
||||
platform_status: "平台状态",
|
||||
issue_resource: "缺陷来源",
|
||||
create_issue: "创建缺陷",
|
||||
add_issue: "添加缺陷",
|
||||
issue_list: "缺陷列表",
|
||||
search_name: "根据标题搜索",
|
||||
platform_tip: "在系统设置-工作空间-服务集成中集成缺陷管理平台可以提交缺陷到指定缺陷管理平台",
|
||||
input_title: "请输入标题",
|
||||
id: "缺陷ID",
|
||||
title: "缺陷标题",
|
||||
description: "缺陷描述",
|
||||
status: "缺陷状态",
|
||||
issue_project: "所属项目",
|
||||
platform: "平台",
|
||||
operate: "操作",
|
||||
close: "关闭缺陷",
|
||||
delete: "删除缺陷",
|
||||
title_description_required: "标题和描述必填",
|
||||
close_success: "关闭成功",
|
||||
delete_warning: "解除会影响测试计划相关统计,是否确认",
|
||||
preview: "预览",
|
||||
status_new: '新建',
|
||||
status_resolved: '已解决',
|
||||
status_closed: '已关闭',
|
||||
status_active: '激活',
|
||||
status_delete: '删除',
|
||||
status_in_progress: '接受/处理',
|
||||
status_rejected: '拒绝',
|
||||
status_upcoming: '待办',
|
||||
status_reopened: '重新打开',
|
||||
please_choose_current_owner: "请选择处理人",
|
||||
tapd_current_owner: "Tapd 处理人",
|
||||
zentao_bug_build: "禅道 影响版本",
|
||||
zentao_bug_assigned: "禅道 处理人",
|
||||
third_party_integrated: "集成第三方平台",
|
||||
use_third_party: "使用 Jira 缺陷模板",
|
||||
update_third_party_bugs: "更新第三方平台的缺陷",
|
||||
sync_bugs: "同步缺陷",
|
||||
sync_complete: "同步完成",
|
||||
issue_sync_tip: "当前项目正在同步缺陷, 请稍等!",
|
||||
save_before_open_comment: "请先保存缺陷再添加评论",
|
||||
delete_tip: "确认删除缺陷:",
|
||||
check_id_exist: "检查",
|
||||
save_project_first: "请先保存项目",
|
||||
tapd_status_new: "新",
|
||||
tapd_status_in_progress: "接受/处理",
|
||||
tapd_status_reopened: "重新打开",
|
||||
tapd_status_rejected: "已拒绝",
|
||||
tapd_status_verified: "已验证",
|
||||
tapd_status_closed: "已关闭",
|
||||
tapd_status_resolved: "已解决",
|
||||
please_choose_platform_status: "请选择平台状态"
|
||||
},
|
||||
report: {
|
||||
name: "测试计划报告",
|
||||
list: {
|
||||
name: "名称",
|
||||
test_plan: "测试计划名称",
|
||||
creator: "创建人",
|
||||
create_time: "创建时间",
|
||||
trigger_mode: "触发方式",
|
||||
run_time: "运行耗时(s)",
|
||||
pass_rate: "成功率",
|
||||
status: "状态",
|
||||
operation: "操作",
|
||||
},
|
||||
trigger_mode: {
|
||||
manual: "手动触发",
|
||||
automation: "自动触发",
|
||||
},
|
||||
overview: "概览",
|
||||
testing_time: "测试时间",
|
||||
total_number_tests: "测试总数",
|
||||
exacutive_rate: "执行率",
|
||||
exacutive_rate_tip: "执行过的用例/所有用例 * 100%",
|
||||
passing_rate: "通过率",
|
||||
passing_rate_tip: "执行通过用例/所有用例 * 100%",
|
||||
content: "目录",
|
||||
report_summary: "报告总结",
|
||||
analysis_functional: "功能用例统计分析",
|
||||
analysis_api: "接口用例统计分析",
|
||||
analysis_ui: "UI 用例统计分析",
|
||||
analysis_load: "性能用例统计分析",
|
||||
valid_for_24_hours: "24小时有效",
|
||||
configuration: "配置",
|
||||
share: "分享",
|
||||
template_configuration: "模板配置",
|
||||
test_result: "测试结果",
|
||||
fail_case: "失败用例",
|
||||
issue_list: "缺陷列表",
|
||||
all_case: "所有用例",
|
||||
},
|
||||
reporter: '报告人',
|
||||
lastmodify: '最后更改'
|
||||
},
|
||||
test_track,
|
||||
test_resource_pool: {
|
||||
id: "测试资源池ID",
|
||||
type: '类型',
|
||||
|
@ -1,3 +1,5 @@
|
||||
import test_track from "./track/zh-TW";
|
||||
|
||||
export default {
|
||||
commons: {
|
||||
project_permission: '請先添加該項目權限',
|
||||
@ -95,6 +97,7 @@ export default {
|
||||
test: '測試',
|
||||
create_time: '創建時間',
|
||||
update_user_id: '更新人ID',
|
||||
creator: '創建人',
|
||||
update_time: '更新時間',
|
||||
delete_time: '刪除時間',
|
||||
delete_user: '刪除人',
|
||||
@ -2068,509 +2071,7 @@ export default {
|
||||
please_search: "請搜索",
|
||||
date: "日期"
|
||||
},
|
||||
test_track: {
|
||||
sync_add_api_load: '同步添加關聯的接口和性能測試',
|
||||
next: '下一條',
|
||||
total_size: '共 {0} 條',
|
||||
related_requirements: '關聯需求',
|
||||
please_related_requirements: '請選擇要關聯的需求',
|
||||
please_select_the_test_to_associate: "請選擇需要關聯的測試",
|
||||
person_responsible: "責任人",
|
||||
test_track: "測試跟蹤",
|
||||
planning_execution: "規劃&執行",
|
||||
confirm: "確 定",
|
||||
cancel: "取 消",
|
||||
project: "項目",
|
||||
save: "保 存",
|
||||
return: "返 回",
|
||||
length_less_than: "長度必須小於",
|
||||
recent_plan: "我最近的計劃",
|
||||
recent_case: "我最近的用例",
|
||||
recent_review: "我最近的評審",
|
||||
pass_rate: "通過率",
|
||||
execution_result: ": 請選擇執行結果",
|
||||
actual_result: ": 實際結果為空",
|
||||
cancel_relevance_success: "取消關聯成功",
|
||||
switch_project: "切換項目",
|
||||
functional_test_case: "功能測試用例",
|
||||
api_test_case: "接口測試用例",
|
||||
ui_test_case: "UI 測試用例",
|
||||
performance_test_case: "性能測試用例",
|
||||
scenario_test_case: "場景測試用例",
|
||||
ui_scenario_test_case: "UI 測試用例",
|
||||
report_statistics: "報告統計",
|
||||
sort: '種類',
|
||||
automatic_status_update: "自動狀態更新",
|
||||
case: {
|
||||
list: "列表",
|
||||
minder: "腦圖",
|
||||
step_info: "步驟信息",
|
||||
other_info: "其他信息",
|
||||
step_describe: "步驟描述",
|
||||
step_describe_tip: "適用於需要每一個步驟進行測試的場景,有明確的測試步驟、預期結果",
|
||||
text_describe: "文本描述",
|
||||
text_describe_tip: "使用於簡單的測試場景,沒有明確的測試步驟",
|
||||
change_type: "更改類型",
|
||||
minder_create_tip: "失敗, 無法在腦圖創建其父模塊",
|
||||
minder_tem_node_tip: "無法在臨時節點{0}下創建用例",
|
||||
minder_is_module_tip: "{0}是模塊,不能修改為用例",
|
||||
minder_not_module_tip: "模塊{0},不能創建在非模塊節點下",
|
||||
minder_all_module_tip: "全部用例為虛擬模塊,請在其他模塊創建用例",
|
||||
minder_issue_delete_tip: "取消缺陷關聯成功",
|
||||
minder_save_confirm_title: '請保存腦圖',
|
||||
minder_save_confirm_tip: '腦圖未保存,確認保存腦圖嗎?',
|
||||
minder_import_save_confirm_tip: '導入成功後會刷新腦圖,確認保存腦圖嗎?',
|
||||
check_select: "請勾選用例",
|
||||
export_all_cases: '確定要導出全部用例嗎?',
|
||||
input_test_case: '請輸入關聯用例名稱',
|
||||
test_name: '測試名稱',
|
||||
other: "--其他--",
|
||||
test_case: "功能用例",
|
||||
move: "移動用例",
|
||||
case_list: "用例列表",
|
||||
create_case: "創建用例",
|
||||
edit_case: "編輯用例",
|
||||
view_case: "查看用例",
|
||||
no_project: "該工作空間下無項目,請先創建項目",
|
||||
priority: "用例等級",
|
||||
type: "類型",
|
||||
method: "測試方式",
|
||||
auto: "自動",
|
||||
manual: "手動",
|
||||
create: "新建用例",
|
||||
case_type: "用例類型",
|
||||
name: "用例名稱",
|
||||
module: "所屬模塊",
|
||||
project: '所屬項目',
|
||||
maintainer: "維護人",
|
||||
steps: "執行步驟",
|
||||
number: "編號",
|
||||
prerequisite: "前置條件",
|
||||
step_desc: "用例步驟",
|
||||
expected_results: "預期結果",
|
||||
input_name: "請輸入名稱",
|
||||
input_module: "請選擇模塊",
|
||||
input_maintainer: "請選擇維護人",
|
||||
input_priority: "請選擇用例等級",
|
||||
input_type: "請選擇用例類型",
|
||||
input_method: "請選擇測試方式",
|
||||
input_prerequisite: "請輸入前置條件",
|
||||
input_demand_name: "請輸入需求ID或名稱",
|
||||
delete_confirm: "確認刪除測試用例",
|
||||
delete: "刪除用例",
|
||||
save_create_continue: "保存並繼續創建",
|
||||
save_add_public: "保存並添加到公共用例庫",
|
||||
please_create_project: "暫無項目,請先創建項目",
|
||||
create_module_first: "請先新建模塊",
|
||||
relate_test: "關聯測試",
|
||||
relate_issue: "關聯缺陷",
|
||||
demand_name_id: "需求ID/名稱",
|
||||
please_select_relate_test: "請選擇要關聯的測試",
|
||||
relate_test_not_find: '關聯的測試不存在,請檢查用例',
|
||||
other_relate_test_not_find: '關聯的測試名,請前往第三方平臺執行',
|
||||
batch_handle: '批量處理 (選中{0}項)',
|
||||
batch_update: '更新{0}個用例的屬性',
|
||||
select_catalog: '請選擇用例目錄',
|
||||
updated_attr_value: '更新後屬性值為',
|
||||
batch_operate: '批量操作',
|
||||
please_select_attr: '請選擇屬性',
|
||||
please_select_attr_value: '請選擇屬性對應的值',
|
||||
batch_edit_case: '批量編輯',
|
||||
batch_move_case: '批量移動',
|
||||
batch_delete_case: '批量刪除',
|
||||
batch_copy: '批量復製',
|
||||
batch_add_public: '批量添加到公共用例庫',
|
||||
batch_link_demand: '批量關聯需求',
|
||||
public_warning: '未開啟公共用例庫配置',
|
||||
generate_dependencies: '生成依賴關系',
|
||||
generate_dependencies_warning: '為了更好的體驗,建議勾選一百條以下的數據',
|
||||
batch_unlink: '批量取消關聯',
|
||||
unlink: '取消關聯',
|
||||
project_name: '所屬項目',
|
||||
status: '評審結果',
|
||||
status_prepare: '未開始',
|
||||
status_running: '進行中',
|
||||
status_finished: '已完成',
|
||||
cancel_relevance_project: "取消項目關聯會同時取消該項目下已關聯的測試用例",
|
||||
img_loading_fail: "圖片加載失敗",
|
||||
pdf_loading_fail: "PDF加載失敗",
|
||||
upload_tip: "文件大小限制[0-500MB]",
|
||||
add_attachment: "添加",
|
||||
attachment: "附件",
|
||||
upload_time: "上傳時間",
|
||||
total: "用例總數",
|
||||
node_id: "節點ID",
|
||||
node_path: "節點路徑",
|
||||
match_rule: "測試用例匹配規則",
|
||||
import: {
|
||||
import: "導入用例",
|
||||
case_import: "導入測試用例",
|
||||
case_export: "導出測試用例",
|
||||
download_template: "下載模版",
|
||||
click_upload: "點擊上傳",
|
||||
upload_limit: "只能上傳xls/xlsx文件,且不超過100M",
|
||||
upload_xmind: "支持文件類型:.xmind;一次至多導入800 條用例",
|
||||
upload_xmind_format: "上傳文件只能是 .xmind 格式",
|
||||
upload_limit_other_size: "上傳文件大小不能超過",
|
||||
upload_limit_count: "一次只能上傳一個文件",
|
||||
upload_limit_format: "上傳文件只能是 xls、xlsx格式!",
|
||||
upload_limit_size: "上傳文件大小不能超過 100MB!",
|
||||
success: "導入成功!",
|
||||
importing: "導入中...",
|
||||
excel_title: "表格文件",
|
||||
xmind_title: "思維導圖",
|
||||
import_desc: "導入說明",
|
||||
import_file: "上傳文件",
|
||||
ignore_error: "忽略錯誤",
|
||||
continue_upload: "繼續上傳",
|
||||
import_create: "導入新建",
|
||||
import_update: "導入更新",
|
||||
import_tip1: "項目設置中「測試用例自定義ID」 開關開啟時ID為必填項",
|
||||
import_tip2: "導入更新時ID為必填項",
|
||||
import_file_tips: "請先上傳文件!",
|
||||
},
|
||||
export: {
|
||||
export: "導出用例",
|
||||
export_tip: "請切換成用例列表勾選用例導出!"
|
||||
},
|
||||
case_desc: "用例描述",
|
||||
passing_rate: '用例通過率',
|
||||
sync_to_new_version: "復製以下信息到新版本",
|
||||
exists_multiple_prerequisite_node: "下存在多個前置條件",
|
||||
exists_multiple_remark_node: "下存在多個備註"
|
||||
},
|
||||
plan: {
|
||||
test_plan: "測試計劃",
|
||||
test_plan_id: '測試計劃Id',
|
||||
create_plan: "創建測試計劃",
|
||||
edit_plan: "編輯測試計劃",
|
||||
plan_name: "計劃名稱",
|
||||
plan_project: "所屬項目",
|
||||
related_project: "關聯項目",
|
||||
related_tip: "關聯項目後可以添加關聯項目下的測試用例到測試計劃列表",
|
||||
plan_stage: "測試階段",
|
||||
follow_people: "關註人",
|
||||
plan_status: "當前狀態",
|
||||
smoke_test: "冒煙測試",
|
||||
functional_test: "功能測試",
|
||||
regression_test: "回歸測試",
|
||||
integration_testing: "集成測試",
|
||||
system_test: "系統測試",
|
||||
version_validation: "版本驗證",
|
||||
plan_principal: "負責人",
|
||||
input_plan_name: "請輸入測試計劃名稱",
|
||||
input_plan_principal: "請選擇負責人",
|
||||
input_plan_project: "請選擇所屬項目",
|
||||
input_related_project: "請選擇關聯項目",
|
||||
input_plan_stage: "請選擇測試階段",
|
||||
plan_status_prepare: "未開始",
|
||||
plan_status_running: "進行中",
|
||||
plan_status_finished: "已結束",
|
||||
plan_status_completed: "已完成",
|
||||
plan_status_archived: "已歸檔",
|
||||
plan_status_trash: "廢棄",
|
||||
planned_start_time: "計劃開始",
|
||||
planned_end_time: "計劃結束",
|
||||
actual_start_time: "實際開始",
|
||||
actual_end_time: "實際結束",
|
||||
plan_delete_confirm: "將刪除該測試計劃下所有用例,確認刪除測試計劃: ",
|
||||
plan_delete_tip: "該測試計劃正在進行中,請確認再刪除!",
|
||||
plan_delete: "刪除計劃",
|
||||
api_case: "接口測試用例",
|
||||
scenario_case: "場景測試用例",
|
||||
execute_result: "執行結果",
|
||||
execute_time: '執行時間',
|
||||
is_api_case_executing: "是否執行接口用例",
|
||||
is_scenario_executing: '是否執行場景',
|
||||
is_performance_executing: '是否執行性能',
|
||||
test_plan_test_case_count: "功能用例數",
|
||||
test_plan_api_case_count: "接口用例數",
|
||||
test_plan_api_scenario_count: "場景用例數",
|
||||
test_plan_ui_scenario_count: "UI 場景用例數",
|
||||
test_plan_load_case_count: "性能用例數",
|
||||
test_plan_component_case_count: "步驟用例數",
|
||||
data_name: "數據名稱",
|
||||
test_plan_batch_switch: "批量開/關定時任務",
|
||||
batch_update_schedule_enable: '更新{0}個測試計畫的定時任務狀態為',
|
||||
batch_update_schedule_enable_alert: '注意:只能更新已設定了定時任務的測試計畫',
|
||||
next_run_time: '下次運行時間',
|
||||
schedule_enabled: '已開啟',
|
||||
check_schedule_enabled: '您勾選的數據檢測到有{0}條定時任務可以修改',
|
||||
no_check_schedule_enabled: '您勾選的數據沒有檢測到定時任務',
|
||||
load_case: {
|
||||
case: "性能用例",
|
||||
execution_status: "執行狀態",
|
||||
report: "報告",
|
||||
view_report: "查看報告",
|
||||
unlink_in_bulk: "批量取消關聯",
|
||||
batch_exec_cases: "批量執行用例",
|
||||
exec: "正在執行....",
|
||||
error: "用例執行錯誤,請單獨調試該用例!",
|
||||
report_not_found: "報告不存在",
|
||||
content_empty: "內容為空",
|
||||
}
|
||||
},
|
||||
demand: {
|
||||
id: '需求ID',
|
||||
name: '需求名稱',
|
||||
batch_relate: '批量關聯需求',
|
||||
relate_is_null_warn: '關聯需求不能為空!',
|
||||
relate_name_is_null_warn: '需求名稱不能為空!',
|
||||
third_platform_demand: "三方平台需求",
|
||||
other_demand: "其他需求"
|
||||
},
|
||||
step_model: '步驟模型',
|
||||
review: {
|
||||
test_review: "用例評審",
|
||||
create_review: "創建用例評審",
|
||||
edit_review: "編輯用例評審",
|
||||
review_name: "評審名稱",
|
||||
reviewer: "評審人",
|
||||
review_project: "所屬項目",
|
||||
related_project: "關聯項目",
|
||||
related_tip: "關聯項目後可以添加關聯項目下的測試用例到評審列表",
|
||||
review_creator: "發起人",
|
||||
review_follow_people: "關註人",
|
||||
review_status: "當前狀態",
|
||||
end_time: "截止時間",
|
||||
delete: "刪除評審",
|
||||
input_review_name: "請輸入評審名稱",
|
||||
input_review_project: "請選擇所屬項目",
|
||||
input_reviewer: "請選擇評審人",
|
||||
no_link_case: "沒有關聯用例!",
|
||||
pass: "通過",
|
||||
un_pass: "未通過",
|
||||
prepare: '未評審',
|
||||
comment: "評論",
|
||||
my_review: "我的評審",
|
||||
my_create: "我創建的評審",
|
||||
reviewed_by_me: "待我評審",
|
||||
creator: "創建人",
|
||||
done: "已評用例",
|
||||
result_distribution: "結果分布",
|
||||
deadline_cannot_early_tips: "截止時間不能早於當前時間!",
|
||||
},
|
||||
comment: {
|
||||
no_comment: "暫無評論",
|
||||
send_comment: "發表評論(Ctrl+Enter發送)",
|
||||
send: "確定",
|
||||
description_is_null: "評論內容不能為空!",
|
||||
send_success: "評論成功!",
|
||||
cannot_edit: "無法編輯此評論!",
|
||||
cannot_delete: "無法刪除此評論!",
|
||||
submit_description: "請先提交評論!",
|
||||
},
|
||||
review_view: {
|
||||
review: "評審",
|
||||
all_case: "全部用例",
|
||||
start_review: "開始評審",
|
||||
relevance_case: "關聯用例",
|
||||
last_page: "已經到底了!",
|
||||
execute_result: "評審結果",
|
||||
},
|
||||
module: {
|
||||
id: '模塊ID',
|
||||
search: "搜索模塊",
|
||||
rename: "重命名",
|
||||
add_submodule: "添加子模塊",
|
||||
add_module: "添加模塊",
|
||||
name: "模塊名稱",
|
||||
delete_confirm: "確認刪除模塊: ",
|
||||
delete_all_resource: "以及模塊下所有子模塊和測試用例",
|
||||
delete_batch_confirm: "確認批量刪除勾選的場景步驟?",
|
||||
module: "模塊",
|
||||
title: "標題",
|
||||
status: "狀態",
|
||||
describe: "描述",
|
||||
current_owner: "處理人",
|
||||
creation_time: "創建時間",
|
||||
project_name: "所屬項目"
|
||||
},
|
||||
home: {
|
||||
recent_test: "最近測試",
|
||||
my_plan: "我的計劃",
|
||||
test_rate: "測試進度",
|
||||
tested_case: "已測用例",
|
||||
review_progress: "評審進度",
|
||||
case_count: "用例數量統計",
|
||||
relevance_case: "關聯用例數量統計",
|
||||
case_maintenance: "用例責任人分布",
|
||||
bug_count: "遺留缺陷統計",
|
||||
case_review: "用例評審",
|
||||
review_rate: "評審率",
|
||||
coverage: "覆蓋率",
|
||||
function_case_count: "功能用例數",
|
||||
relevance_case_count: "關聯用例數",
|
||||
serial_number: "序號",
|
||||
test_plan_name: "測試計劃名稱",
|
||||
case_size: "用例數",
|
||||
bug_size: "缺陷數",
|
||||
passing_rate: "通過率",
|
||||
percentage: "占比"
|
||||
},
|
||||
plan_view: {
|
||||
plan: "計劃",
|
||||
relevance_test_case: "關聯測試用例",
|
||||
cancel_all_relevance: "取消全部關聯",
|
||||
executor: "執行人",
|
||||
executor_match_rule: "執行者匹配規則",
|
||||
execute_result: "執行結果",
|
||||
pass: "通過",
|
||||
not_pass: "不通過",
|
||||
failure: "失敗",
|
||||
blocking: "阻塞",
|
||||
stop: "停止",
|
||||
skip: "跳過",
|
||||
actual_result: "實際結果",
|
||||
step_result: "步驟執行結果",
|
||||
my_case: "我的用例",
|
||||
all_case: "全部用例",
|
||||
pre_case: "上一條用例",
|
||||
next_case: "下一條用例",
|
||||
change_execution_results: "更改執行結果",
|
||||
change_executor: "更改執行人",
|
||||
select_executor: "請選擇執行人",
|
||||
select_execute_result: "選擇執行結果",
|
||||
cancel_relevance: "取消用例關聯",
|
||||
confirm_cancel_relevance: "確認取消關聯",
|
||||
select_manipulate: "請選擇需要操作的數據",
|
||||
select_template: "選擇模版",
|
||||
step: "步驟",
|
||||
submit_issues: "提缺陷",
|
||||
operate_step: "操作步驟",
|
||||
edit_component: "編輯組件",
|
||||
component: "組件",
|
||||
base_info: "基礎信息",
|
||||
mock_info: "Mock服務",
|
||||
test_result: "測試結果",
|
||||
result_distribution: "測試結果分布",
|
||||
custom_component: "自定義模塊",
|
||||
defect_list: "缺陷列表",
|
||||
create_report: "創建測試報告",
|
||||
view_report: "查看測試報告",
|
||||
component_library: "組件庫",
|
||||
component_library_tip: "拖拽組件庫中組件,添加至右側,預覽報告效果,每個系統組件只能添加一個。",
|
||||
delete_component_tip: "請至少保留一個組件",
|
||||
input_template_name: "輸入模版名稱",
|
||||
template_special_characters: '模版名稱不支持特殊字符',
|
||||
case_count: "用例數",
|
||||
issues_count: "缺陷數",
|
||||
result_statistics: "測試結果統計",
|
||||
result_statistics_chart: "測試結果統計圖",
|
||||
create_template: "新建模版",
|
||||
report_template: "測試報告模版",
|
||||
test_detail: "測試詳情",
|
||||
failure_case: "失敗用例",
|
||||
export_report: "導出報告",
|
||||
share_report: "分享報告",
|
||||
no_case_relevance: "沒有關聯用例",
|
||||
automatically_update_status: "自動更新狀態",
|
||||
automatically_update_status_tip: "當功能用例關聯的接口或性能用例在測試計劃執行後,自動更新功能用例的狀態",
|
||||
allow_associated_repetitive_cases: "允許關聯重復用例",
|
||||
allow_associated_repetitive_cases_tip: "是否允許同一個測試計劃中多次關聯相同用例",
|
||||
performance_case_count: "性能測試用例數",
|
||||
running: "運行中",
|
||||
please_choose_test_case: "请选择测试用例!",
|
||||
execute_tip: "步驟執行結果中含有 失敗 結果,無法標記該用例為 通過 狀態!"
|
||||
},
|
||||
issue: {
|
||||
issue: "缺陷",
|
||||
issue_management: "缺陷管理",
|
||||
platform_status: "平臺狀態",
|
||||
issue_resource: "缺陷來源",
|
||||
create_issue: "創建缺陷",
|
||||
add_issue: "添加缺陷",
|
||||
issue_list: "缺陷列表",
|
||||
search_name: "根據標題搜索",
|
||||
platform_tip: "在系統設置-工作空間-服務集成中集成缺陷管理平臺可以提交缺陷到指定缺陷管理平臺",
|
||||
input_title: "請輸入標題",
|
||||
id: "缺陷ID",
|
||||
title: "缺陷標題",
|
||||
description: "缺陷描述",
|
||||
status: "缺陷狀態",
|
||||
issue_project: "所屬項目",
|
||||
platform: "平臺",
|
||||
operate: "操作",
|
||||
close: "關閉缺陷",
|
||||
delete: "刪除缺陷",
|
||||
title_description_required: "標題和描述必填",
|
||||
close_success: "關閉成功",
|
||||
delete_warning: "解除會影響測試計畫相關統計,是否確認",
|
||||
preview: "預覽",
|
||||
status_new: '新建',
|
||||
status_resolved: '已解決',
|
||||
status_closed: '已關閉',
|
||||
status_active: '激活',
|
||||
status_delete: '刪除',
|
||||
status_in_progress: '接受/處理',
|
||||
status_rejected: '拒絕',
|
||||
status_upcoming: '待辦',
|
||||
status_reopened: '重新打開',
|
||||
please_choose_current_owner: "請選擇處理人",
|
||||
tapd_current_owner: "Tapd 處理人",
|
||||
zentao_bug_build: "禪道 影響版本",
|
||||
zentao_bug_assigned: "禪道 處理人",
|
||||
third_party_integrated: "集成第三方平臺",
|
||||
use_third_party: "使用 Jira 缺陷模板",
|
||||
update_third_party_bugs: "更新第三方平臺的缺陷",
|
||||
sync_bugs: "同步缺陷",
|
||||
sync_complete: "同步完成",
|
||||
issue_sync_tip: "當前項目正在同步缺陷, 請稍等!",
|
||||
save_before_open_comment: "請先保存缺陷再添加評論",
|
||||
delete_tip: "確認刪除缺陷:",
|
||||
check_id_exist: "檢查",
|
||||
save_project_first: "請先保存項目",
|
||||
tapd_status_new: "新",
|
||||
tapd_status_in_progress: "接受/處理",
|
||||
tapd_status_reopened: "重新打開",
|
||||
tapd_status_rejected: "已拒絕",
|
||||
tapd_status_verified: "已驗證",
|
||||
tapd_status_closed: "已關閉",
|
||||
tapd_status_resolved: "已解決",
|
||||
please_choose_platform_status: "請選擇平臺狀態",
|
||||
},
|
||||
report: {
|
||||
name: "測試計劃報告",
|
||||
list: {
|
||||
name: "名稱",
|
||||
test_plan: "測試計劃名稱",
|
||||
creator: "創建人",
|
||||
create_time: "創建時間",
|
||||
trigger_mode: "觸發方式",
|
||||
run_time: "運行耗時(s)",
|
||||
pass_rate: "成功率",
|
||||
status: "狀態",
|
||||
operation: "操作",
|
||||
},
|
||||
trigger_mode: {
|
||||
manual: "手動觸發",
|
||||
automation: "自動觸發",
|
||||
},
|
||||
overview: "概覽",
|
||||
testing_time: "測試時間",
|
||||
total_number_tests: "測試總數",
|
||||
exacutive_rate: "執行率",
|
||||
exacutive_rate_tip: "執行過的用例/所有用例 * 100%",
|
||||
passing_rate: "通過率",
|
||||
passing_rate_tip: "執行通過用例/所有用例 * 100%",
|
||||
content: "目錄",
|
||||
report_summary: "報告總結",
|
||||
analysis_functional: "功能用例統計分析",
|
||||
analysis_api: "接口用例統計分析",
|
||||
analysis_ui: "UI 用例統計分析",
|
||||
analysis_load: "性能用例統計分析",
|
||||
valid_for_24_hours: "24小時有效",
|
||||
configuration: "配置",
|
||||
share: "分享",
|
||||
template_configuration: "模板配置",
|
||||
test_result: "測試結果",
|
||||
fail_case: "失敗用例",
|
||||
issue_list: "缺陷列表",
|
||||
all_case: "所有用例",
|
||||
},
|
||||
reporter: '報告人',
|
||||
lastmodify: '最後更改',
|
||||
},
|
||||
test_track,
|
||||
test_resource_pool: {
|
||||
id: "測試資源池ID",
|
||||
type: '類型',
|
||||
|
Loading…
Reference in New Issue
Block a user