国际化

This commit is contained in:
chenjianxing 2020-04-21 13:19:46 +08:00
parent 3fd4e2ee6c
commit eb61f51fd0
19 changed files with 365 additions and 325 deletions

View File

@ -111,7 +111,7 @@
},
checkProject() {
if(this.currentProject === null) {
this.$alert(this.$t('test_track.no_project'), {
this.$alert(this.$t('test_track.case.no_project'), {
confirmButtonText: this.$t('project.create'),
callback: action => {
this.$router.push("/track/project/create");

View File

@ -1,7 +1,7 @@
<template>
<div v-loading="result.loading">
<el-input :placeholder="$t('test_track.search_module')" v-model="filterText"
<el-input :placeholder="$t('test_track.module.search')" v-model="filterText"
size="small">
<template v-slot:append>
<el-button icon="el-icon-folder-add" @click="openEditNodeDialog('add')"></el-button>
@ -28,10 +28,10 @@
</span>
<el-dropdown-menu v-slot:default>
<el-dropdown-item>
<div @click="openEditNodeDialog('edit', data)">{{$t('test_track.rename')}}</div>
<div @click="openEditNodeDialog('edit', data)">{{$t('test_track.module.rename')}}</div>
</el-dropdown-item>
<el-dropdown-item>
<div @click="openEditNodeDialog('add', data)">{{$t('test_track.add_submodule')}}</div>
<div @click="openEditNodeDialog('add', data)">{{$t('test_track.module.add_submodule')}}</div>
</el-dropdown-item>
<el-dropdown-item>
<div @click="remove(node, data)">{{$t('commons.delete')}}</div>
@ -42,12 +42,12 @@
</template>
</el-tree>
<el-dialog :title="$t('test_track.add_module')" :visible.sync="dialogFormVisible" width="500px">
<el-dialog :title="$t('test_track.module.add_module')" :visible.sync="dialogFormVisible" width="500px">
<el-row type="flex" justify="center">
<el-col :span="18">
<el-form :model="form">
<el-form-item :label="$t('test_track.module_name')" :label-width="formLabelWidth">
<el-form-item :label="$t('test_track.module.name')" :label-width="formLabelWidth">
<el-input v-model="form.name" autocomplete="off"></el-input>
</el-form-item>
</el-form>
@ -127,8 +127,8 @@
this.$post('/case/node/edit', param);
},
remove(node, data) {
this.$alert(this.$t('test_track.delete_module_confirm') + data.label + "" +
this.$t('test_track.delete_module_resource') + "", '', {
this.$alert(this.$t('test_track.module.delete_confirm') + data.label + "" +
this.$t('test_track.module.delete_all_resource') + "", '', {
confirmButtonText: this.$t('commons.confirm'),
callback: (action) => {
if (action === 'confirm') {
@ -139,6 +139,7 @@
const children = parent.data.children || parent.data;
const index = children.findIndex(d => d.id === data.id);
children.splice(index, 1);
this.$message.success(this.$t('commons.delete_success'));
this.$emit("refresh");
});
}
@ -215,6 +216,7 @@
this.treeNodes.push(param);
}
}
this.$message.success(this.$t('commons.save_success'));
});
this.form.name = '';
},

View File

@ -2,15 +2,15 @@
<div>
<el-dialog :title="$t('test_track.create')" :visible.sync="dialogFormVisible" width="65%">
<el-dialog :title="$t('test_track.case.create')" :visible.sync="dialogFormVisible" width="65%">
<el-form :model="form" :rules="rules" ref="caseFrom">
<el-row>
<el-col :span="8" :offset="1">
<el-form-item
:placeholder="$t('test_track.input_name')"
:label="$t('test_track.name')"
:placeholder="$t('test_track.case.input_name')"
:label="$t('test_track.case.name')"
:label-width="formLabelWidth"
prop="name">
<el-input v-model="form.name"></el-input>
@ -18,10 +18,10 @@
</el-col>
<el-col :span="11" :offset="2">
<el-form-item :label="$t('test_track.module')" :label-width="formLabelWidth" prop="module">
<el-form-item :label="$t('test_track.case.module')" :label-width="formLabelWidth" prop="module">
<el-select
v-model="form.module"
:placeholder="$t('test_track.input_module')"
:placeholder="$t('test_track.case.input_module')"
filterable>
<el-option
v-for="item in moduleOptions"
@ -36,8 +36,8 @@
<el-row>
<el-col :span="10" :offset="1">
<el-form-item :label="$t('test_track.maintainer')" :label-width="formLabelWidth" prop="maintainer">
<el-select v-model="form.maintainer" :placeholder="$t('test_track.input_maintainer')" filterable>
<el-form-item :label="$t('test_track.case.maintainer')" :label-width="formLabelWidth" prop="maintainer">
<el-select v-model="form.maintainer" :placeholder="$t('test_track.case.input_maintainer')" filterable>
<el-option
v-for="item in maintainerOptions"
:key="item.id"
@ -48,8 +48,8 @@
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item :label="$t('test_track.priority')" :label-width="formLabelWidth" prop="priority">
<el-select v-model="form.priority" clearable :placeholder="$t('test_track.input_priority')">
<el-form-item :label="$t('test_track.case.priority')" :label-width="formLabelWidth" prop="priority">
<el-select v-model="form.priority" clearable :placeholder="$t('test_track.case.input_priority')">
<el-option label="P0" value="P0"></el-option>
<el-option label="P1" value="P1"></el-option>
<el-option label="P2" value="P2"></el-option>
@ -61,26 +61,26 @@
<el-row>
<el-col :span="10" :offset="1">
<el-form-item :label="$t('test_track.type')" :label-width="formLabelWidth" prop="type">
<el-select v-model="form.type" :placeholder="$t('test_track.input_type')">
<el-option :label="$t('test_track.functional_test')" value="functional"></el-option>
<el-form-item :label="$t('test_track.case.type')" :label-width="formLabelWidth" prop="type">
<el-select v-model="form.type" :placeholder="$t('test_track.case.input_type')">
<el-option :label="$t('commons.functional')" value="functional"></el-option>
<el-option :label="$t('commons.performance')" value="performance"></el-option>
<el-option :label="$t('commons.api')" value="api"></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item :label="$t('test_track.method')" :label-width="formLabelWidth" prop="method">
<el-select v-model="form.method" :placeholder="$t('test_track.input_method')">
<el-option :label="$t('test_track.manual')" value="manual"></el-option>
<el-option :label="$t('test_track.auto')" value="auto"></el-option>
<el-form-item :label="$t('test_track.case.method')" :label-width="formLabelWidth" prop="method">
<el-select v-model="form.method" :placeholder="$t('test_track.case.input_method')">
<el-option :label="$t('test_track.case.manual')" value="manual"></el-option>
<el-option :label="$t('test_track.case.auto')" value="auto"></el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row style="margin-top: 15px;">
<el-col :offset="2">{{$t('test_track.prerequisite')}}:</el-col>
<el-col :offset="2">{{$t('test_track.case.prerequisite')}}:</el-col>
</el-row>
<el-row type="flex" justify="center" style="margin-top: 10px;">
<el-col :span="20">
@ -89,13 +89,13 @@
type="textarea"
:autosize="{ minRows: 2, maxRows: 4}"
:rows="2"
:placeholder="$t('test_track.input_prerequisite')"></el-input>
:placeholder="$t('test_track.case.input_prerequisite')"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row style="margin-bottom: 10px">
<el-col :offset="2">{{$t('test_track.steps')}}:</el-col>
<el-col :offset="2">{{$t('test_track.case.steps')}}:</el-col>
</el-row>
<el-row type="flex" justify="center">
<el-col :span="20">
@ -106,8 +106,8 @@
size="mini"
:default-sort = "{prop: 'num', order: 'ascending'}"
highlight-current-row>
<el-table-column :label="$t('test_track.number')" prop="num" min-width="15%"></el-table-column>
<el-table-column :label="$t('test_track.step_desc')" prop="desc" min-width="35%">
<el-table-column :label="$t('test_track.case.number')" prop="num" min-width="15%"></el-table-column>
<el-table-column :label="$t('test_track.case.step_desc')" prop="desc" min-width="35%">
<template v-slot:default="scope">
<el-input
size="mini"
@ -119,7 +119,7 @@
<span>{{scope.row.desc}}</span>
</template>
</el-table-column>
<el-table-column :label="$t('test_track.expected_results')" prop="result" min-width="35%">
<el-table-column :label="$t('test_track.case.expected_results')" prop="result" min-width="35%">
<template v-slot:default="scope">
<el-input
size="mini"
@ -213,12 +213,12 @@
moduleOptions: [],
maintainerOptions: [],
rules:{
name :[{required: true, message: this.$t('test_track.input_name'), trigger: 'blur'}],
module :[{required: true, message: this.$t('test_track.input_module'), trigger: 'change'}],
maintainer :[{required: true, message: this.$t('test_track.input_maintainer'), trigger: 'change'}],
priority :[{required: true, message: this.$t('test_track.input_priority'), trigger: 'change'}],
type :[{required: true, message: this.$t('test_track.input_type'), trigger: 'change'}],
method :[{required: true, message: this.$t('test_track.input_method'), trigger: 'change'}]
name :[{required: true, message: this.$t('test_track.case.input_name'), trigger: 'blur'}],
module :[{required: true, message: this.$t('test_track.case.input_module'), trigger: 'change'}],
maintainer :[{required: true, message: this.$t('test_track.case.input_maintainer'), trigger: 'change'}],
priority :[{required: true, message: this.$t('test_track.case.input_priority'), trigger: 'change'}],
type :[{required: true, message: this.$t('test_track.case.input_type'), trigger: 'change'}],
method :[{required: true, message: this.$t('test_track.case.input_method'), trigger: 'change'}]
},
formLabelWidth: "120px",
operationType: ''

View File

@ -1,6 +1,6 @@
<template>
<div>
<el-tooltip class="item" effect="dark" content="导出用例" placement="right">
<el-tooltip class="item" effect="dark" :content="$t('test_track.case.export.export')" placement="right">
<el-button type="info" icon="el-icon-download" size="mini" circle></el-button>
</el-tooltip>
</div>

View File

@ -1,16 +1,16 @@
<template>
<div>
<el-tooltip class="item" effect="dark" content="导入用例" placement="right">
<el-tooltip class="item" effect="dark" :content="$t('test_track.case.import.import')" placement="right">
<el-button type="info" icon="el-icon-upload2" size="mini" circle
@click="dialogVisible = true"></el-button></el-tooltip>
<el-dialog width="30%" title="导入测试用例" :visible.sync="dialogVisible"
<el-dialog width="30%" :title="$t('test_track.case.import.case_import')" :visible.sync="dialogVisible"
@close="init">
<el-row>
<el-link type="primary" class="download-template"
href="/test/case/export/template">下载模版</el-link></el-row>
href="/test/case/export/template">{{$t('test_track.case.import.download_template')}}</el-link></el-row>
<el-row>
<el-upload
@ -25,10 +25,10 @@
:on-error="handleError"
:file-list="fileList">
<template v-slot:trigger>
<el-button size="mini" type="success" plain>点击上传</el-button>
<el-button size="mini" type="success" plain>{{$t('test_track.case.import.click_upload')}}</el-button>
</template>
<template v-slot:tip>
<div class="el-upload__tip">只能上传xls/xlsx文件且不超过20M</div>
<div class="el-upload__tip">{{$t('test_track.case.import.upload_limit')}}</div>
</template>
</el-upload></el-row>
@ -68,13 +68,13 @@
this.init();
},
handleExceed(files, fileList) {
this.$message.warning(`当前限制选择 1 个文件,本次选择了 ${files.length} 个文件`);
this.$message.warning(this.$t('test_track.case.import.upload_limit_count'));
},
UploadValidate(file) {
var suffix =file.name.substring(file.name.lastIndexOf('.') + 1);
if (suffix != 'xls' && suffix != 'xlsx') {
this.$message({
message: '上传文件只能是 xls、xlsx格式!',
message: this.$t('test_track.case.import.upload_limit_format'),
type: 'warning'
});
return false;
@ -82,7 +82,7 @@
if (file.size / 1024 / 1024 > 20) {
this.$message({
message: '上传文件大小不能超过 20MB!',
message: this.$t('test_track.case.import.upload_limit_size'),
type: 'warning'
});
return false;
@ -92,7 +92,7 @@
handleSuccess(response) {
let res = response.data;
if (res.success) {
this.$message.success("导入成功!");
this.$message.success(this.$t('test_track.case.import.success'));
this.dialogVisible = false;
this.$emit("refresh");
} else {

View File

@ -5,8 +5,8 @@
<template v-slot:header>
<div>
<el-row type="flex" justify="space-between" align="middle">
<span class="title">{{$t('test_track.test_case')}}
<ms-create-box :tips="$t('test_track.create')" :exec="testCaseCreate"/></span>
<span class="title">{{$t('test_track.case.test_case')}}
<ms-create-box :tips="$t('test_track.case.create')" :exec="testCaseCreate"/></span>
<span class="operate-button">
<test-case-import :projectId="currentProject == null? null : currentProject.id"
@ -33,31 +33,31 @@
</el-table-column>
<el-table-column
prop="priority"
:label="$t('test_track.priority')"
:label="$t('test_track.case.priority')"
show-overflow-tooltip>
</el-table-column>
<el-table-column
prop="type"
:label="$t('test_track.type')"
:label="$t('test_track.case.type')"
show-overflow-tooltip>
<template v-slot:default="scope">
<span v-if="scope.row.type == 'functional'">{{$t('test_track.functional_test')}}</span>
<span v-if="scope.row.type == 'functional'">{{$t('test_track.case.functional_test')}}</span>
<span v-if="scope.row.type == 'performance'">{{$t('commons.performance')}}</span>
<span v-if="scope.row.type == 'api'">{{$t('commons.api')}}</span>
</template>
</el-table-column>
<el-table-column
prop="method"
:label="$t('test_track.method')"
:label="$t('test_track.case.method')"
show-overflow-tooltip>
<template v-slot:default="scope">
<span v-if="scope.row.method == 'manual'">{{$t('test_track.manual')}}</span>
<span v-if="scope.row.method == 'auto'">{{$t('test_track.auto')}}</span>
<span v-if="scope.row.method == 'manual'">{{$t('test_track.case.manual')}}</span>
<span v-if="scope.row.method == 'auto'">{{$t('test_track.case.auto')}}</span>
</template>
</el-table-column>
<el-table-column
prop="nodePath"
:label="$t('test_track.module')"
:label="$t('test_track.case.module')"
show-overflow-tooltip>
</el-table-column>
<el-table-column
@ -152,7 +152,7 @@
this.$emit('testCaseEdit', testCase);
},
handleDelete(testCase) {
this.$alert(this.$t('test_track.case_delete_confirm') + testCase.name + "", '', {
this.$alert(this.$t('test_track.case.delete_confirm') + testCase.name + "", '', {
confirmButtonText: this.$t('commons.confirm'),
callback: (action) => {
if (action === 'confirm') {

View File

@ -20,7 +20,7 @@
<el-submenu v-if="isCurrentWorkspaceUser"
index="6" popper-class="submenu" v-permission="['test_manager', 'test_user']">
<template v-slot:title>{{$t('test_track.test_case')}}</template>
<template v-slot:title>{{$t('test_track.case.test_case')}}</template>
<ms-recent-list :options="caseRecent"/>
<el-divider/>
<ms-show-all :index="'/track/case/all'"/>
@ -29,12 +29,12 @@
<el-submenu v-if="isCurrentWorkspaceUser"
index="7" popper-class="submenu" v-permission="['test_manager', 'test_user', 'test_viewer']">
<template v-slot:title>{{$t('test_track.test_plan')}}</template>
<template v-slot:title>{{$t('test_track.plan.test_plan')}}</template>
<ms-recent-list :options="planRecent"/>
<el-divider/>
<ms-show-all :index="'/track/plan/all'"/>
<el-menu-item :index="testPlanViewPath" class="blank_item"></el-menu-item>
<ms-create-button :index="'/track/plan/create'" :title="$t('test_track.create_plan')"/>
<ms-create-button :index="'/track/plan/create'" :title="$t('test_track.plan.create_plan')"/>
</el-submenu>
</el-menu>
</el-col>

View File

@ -5,7 +5,7 @@
<select-menu
:data="testPlans"
:current-data="currentPlan"
:title="$t('test_track.plan')"
:title="$t('test_track.plan_view.plan')"
@dataChange="changePlan">
</select-menu>

View File

@ -3,22 +3,22 @@
<el-col>
<el-button type="success" round size="mini"
:icon="status == 'Pass' ? 'el-icon-check' : ''"
@click="setStatus('Pass')"> {{$t('test_track.pass')}}</el-button>
@click="setStatus('Pass')"> {{$t('test_track.plan_view.pass')}}</el-button>
</el-col>
<el-col>
<el-button type="danger" round size="mini"
:icon="status == 'Failure' ? 'el-icon-check' : ''"
@click="setStatus('Failure')"> {{$t('test_track.failure')}}</el-button>
@click="setStatus('Failure')"> {{$t('test_track.plan_view.failure')}}</el-button>
</el-col>
<el-col>
<el-button type="warning" round size="mini"
:icon="status == 'Blocking' ? 'el-icon-check' : ''"
@click="setStatus('Blocking')"> {{$t('test_track.blocking')}}</el-button>
@click="setStatus('Blocking')"> {{$t('test_track.plan_view.blocking')}}</el-button>
</el-col>
<el-col>
<el-button type="info" round size="mini"
:icon="status == 'Skip' ? 'el-icon-check' : ''"
@click="setStatus('Skip')"> {{$t('test_track.skip')}}</el-button>
@click="setStatus('Skip')"> {{$t('test_track.plan_view.skip')}}</el-button>
</el-col>
</el-row>
</template>

View File

@ -1,9 +1,9 @@
<template>
<el-dialog title="更改执行人"
<el-dialog :title="$t('test_track.plan_view.change_executor')"
:visible.sync="executorEditVisible"
width="20%">
<el-select v-model="executor" placeholder="请选择活动区域">
<el-select v-model="executor" :placeholder="$t('test_track.plan_view.select_executor')">
<el-option v-for="item in executorOptions" :key="item.id"
:label="item.name" :value="item.name"></el-option>
</el-select>
@ -49,14 +49,14 @@
let param = {};
param.executor = this.executor;
if (this.executor === '') {
this.$message('请选择执行人!');
this.$message.warning(this.$t('test_track.plan_view.select_executor'));
return;
}
param.ids = [...this.selectIds];
this.$post('/test/plan/case/batch/edit' , param, () => {
this.executor = '';
this.selectIds.clear();
this.$message.success("保存成功");
this.$message.success(this.$t('commons.save_success'));
this.executorEditVisible = false;
this.$emit('refresh');
});

View File

@ -1,7 +1,7 @@
<template>
<div>
<el-input :placeholder="$t('test_track.search_module')" v-model="filterText" size="small"></el-input>
<el-input :placeholder="$t('test_track.module.search')" v-model="filterText" size="small"></el-input>
<el-tree
v-loading="result.loading"

View File

@ -1,6 +1,6 @@
<template>
<el-dialog title="更改执行结果"
<el-dialog :title="$t('test_track.plan_view.change_execution_results')"
:visible.sync="statusEditVisible"
width="30%">
@ -43,7 +43,7 @@
saveStatus() {
let param = {};
if (this.status === '') {
this.$message('请选择执行结果!');
this.$message.warning(this.$t('test_track.plan_view.select_execute_result'));
return;
}
param.status = this.status;
@ -51,7 +51,7 @@
this.$post('/test/plan/case/batch/edit' , param, () => {
this.selectIds.clear();
this.status = '';
this.$message.success("保存成功");
this.$message.success(this.$t('commons.save_success'));
this.statusEditVisible = false;
this.$emit('refresh');
});

View File

@ -2,7 +2,7 @@
<div>
<el-dialog :title="$t('test_track.relevance_test_case')"
<el-dialog :title="$t('test_track.plan_view.relevance_test_case')"
:visible.sync="dialogFormVisible"
@close="close"
width="50%">
@ -32,7 +32,7 @@
<el-table-column
prop="name"
:label="$t('test_track.name')"
:label="$t('test_track.case.name')"
style="width: 100%">
<template v-slot:default="scope">
{{scope.row.name}}
@ -165,11 +165,7 @@
}
.node-tree{
/*border-radius: 1px;*/
/*padding-top: 5px ;*/
/*height: 100%;*/
margin-right: 10px;
/*box-shadow: 0 2px 4px rgba(0, 0, 0, .12), 0 0 6px rgba(0, 0, 0, .04);*/
}
.el-header {
@ -178,10 +174,6 @@
line-height: 60px;
}
.el-aside {
/*color: #333;*/
/*background-color: rgb(238, 241, 246)*/
}
.case-content {
height: 100%;
}

View File

@ -2,7 +2,7 @@
<div>
<el-dialog :title="$t('test_track.create_plan')"
<el-dialog :title="$t('test_track.plan.create_plan')"
:visible.sync="dialogFormVisible"
width="65%">
@ -11,8 +11,8 @@
<el-row>
<el-col :span="8" :offset="1">
<el-form-item
:placeholder="$t('test_track.input_name')"
:label="$t('test_track.plan_name')"
:placeholder="$t('test_track.plan.input_name')"
:label="$t('test_track.plan.plan_name')"
:label-width="formLabelWidth"
prop="name">
<el-input v-model="form.name"></el-input>
@ -20,10 +20,10 @@
</el-col>
<el-col :span="11" :offset="2">
<el-form-item :label="$t('test_track.plan_project')" :label-width="formLabelWidth" prop="projectId">
<el-form-item :label="$t('test_track.plan.plan_project')" :label-width="formLabelWidth" prop="projectId">
<el-select
v-model="form.projectId"
:placeholder="$t('test_track.input_plan_project')"
:placeholder="$t('test_track.plan.input_plan_project')"
filterable>
<el-option
v-for="item in projects"
@ -38,8 +38,8 @@
<el-row>
<el-col :span="10" :offset="1">
<el-form-item :label="$t('test_track.plan_principal')" :label-width="formLabelWidth" prop="principal">
<el-select v-model="form.principal" :placeholder="$t('test_track.input_plan_principal')" filterable>
<el-form-item :label="$t('test_track.plan.plan_principal')" :label-width="formLabelWidth" prop="principal">
<el-select v-model="form.principal" :placeholder="$t('test_track.plan.input_plan_principal')" filterable>
<el-option
v-for="item in principalOptions"
:key="item.id"
@ -51,13 +51,13 @@
</el-col>
<el-col :span="12">
<el-form-item :label="$t('test_track.plan_stage')" :label-width="formLabelWidth" prop="stage">
<el-select v-model="form.stage" clearable :placeholder="$t('test_track.input_plan_stage')">
<el-option :label="$t('test_track.smoke_test')" value="smoke"></el-option>
<el-option :label="$t('test_track.functional_test')" value="functional"></el-option>
<el-option :label="$t('test_track.integration_testing')" value="integration"></el-option>
<el-option :label="$t('test_track.system_test')" value="system"></el-option>
<el-option :label="$t('test_track.version_validation')" value="version"></el-option>
<el-form-item :label="$t('test_track.plan.plan_stage')" :label-width="formLabelWidth" prop="stage">
<el-select v-model="form.stage" clearable :placeholder="$t('test_track.plan.input_plan_stage')">
<el-option :label="$t('test_track.plan.smoke_test')" value="smoke"></el-option>
<el-option :label="$t('test_track.plan.functional_test')" value="functional"></el-option>
<el-option :label="$t('test_track.plan.integration_testing')" value="integration"></el-option>
<el-option :label="$t('test_track.plan.system_test')" value="system"></el-option>
<el-option :label="$t('test_track.plan.version_validation')" value="version"></el-option>
</el-select>
</el-form-item>
</el-col>
@ -114,10 +114,10 @@
description: ''
},
rules:{
name :[{required: true, message: this.$t('test_track.input_name'), trigger: 'blur'}],
projectId :[{required: true, message: this.$t('test_track.input_plan_project'), trigger: 'change'}],
principal :[{required: true, message: this.$t('test_track.input_plan_principal'), trigger: 'change'}],
stage :[{required: true, message: this.$t('test_track.input_plan_stage'), trigger: 'change'}]
name :[{required: true, message: this.$t('test_track.plan.input_plan_name'), trigger: 'blur'}],
projectId :[{required: true, message: this.$t('test_track.plan.input_plan_project'), trigger: 'change'}],
principal :[{required: true, message: this.$t('test_track.plan.input_plan_principal'), trigger: 'change'}],
stage :[{required: true, message: this.$t('test_track.plan.input_plan_stage'), trigger: 'change'}]
},
formLabelWidth: "120px",
operationType: '',

View File

@ -7,8 +7,8 @@
<div>
<el-row type="flex" justify="space-between" align="middle">
<el-col :span="5">
<span class="title">{{$t('test_track.test_plan')}}</span>
<ms-create-box :tips="$t('test_track.create_plan')" :exec="testPlanCreate"/>
<span class="title">{{$t('test_track.plan.test_plan')}}</span>
<ms-create-box :tips="$t('test_track.plan.create_plan')" :exec="testPlanCreate"/>
</el-col>
<el-col :span="5">
@ -33,34 +33,34 @@
</el-table-column>
<el-table-column
prop="principal"
:label="$t('test_track.plan_principal')"
:label="$t('test_track.plan.plan_principal')"
show-overflow-tooltip>
</el-table-column>
<el-table-column
prop="status"
:label="$t('test_track.plan_status')"
:label="$t('test_track.plan.plan_status')"
show-overflow-tooltip>
<template v-slot:default="scope">
<span v-if="scope.row.status == 'Prepare'">{{$t('test_track.plan_status_prepare')}}</span>
<span v-if="scope.row.status == 'Running'">{{$t('test_track.plan_status_running')}}</span>
<span v-if="scope.row.status == 'Completed'">{{$t('test_track.plan_status_completed')}}</span>
<span v-if="scope.row.status == 'Prepare'">{{$t('test_track.plan.plan_status_prepare')}}</span>
<span v-if="scope.row.status == 'Running'">{{$t('test_track.plan.plan_status_running')}}</span>
<span v-if="scope.row.status == 'Completed'">{{$t('test_track.plan.plan_status_completed')}}</span>
</template>
</el-table-column>
<el-table-column
prop="stage"
:label="$t('test_track.plan_stage')"
:label="$t('test_track.plan.plan_stage')"
show-overflow-tooltip>
<template v-slot:default="scope">
<span v-if="scope.row.stage == 'smoke'">{{$t('test_track.smoke_test')}}</span>
<span v-if="scope.row.stage == 'functional'">{{$t('test_track.functional_test')}}</span>
<span v-if="scope.row.stage == 'integration'">{{$t('test_track.integration_testing')}}</span>
<span v-if="scope.row.stage == 'system'">{{$t('test_track.system_test')}}</span>
<span v-if="scope.row.stage == 'version'">{{$t('test_track.version_validation')}}</span>
<span v-if="scope.row.stage == 'smoke'">{{$t('test_track.plan.smoke_test')}}</span>
<span v-if="scope.row.stage == 'functional'">{{$t('test_track.plan.functional_test')}}</span>
<span v-if="scope.row.stage == 'integration'">{{$t('test_track.plan.integration_testing')}}</span>
<span v-if="scope.row.stage == 'system'">{{$t('test_track.plan.system_test')}}</span>
<span v-if="scope.row.stage == 'version'">{{$t('test_track.plan.version_validation')}}</span>
</template>
</el-table-column>
<el-table-column
prop="projectName"
:label="$t('test_track.plan_project')"
:label="$t('test_track.plan.plan_project')"
show-overflow-tooltip>
</el-table-column>
<el-table-column
@ -88,23 +88,6 @@
</el-table-column>
</el-table>
<!--<div>-->
<!--<el-row>-->
<!--<el-col :span="22" :offset="1">-->
<!--<div class="table-page">-->
<!--<el-pagination-->
<!--@size-change="handleSizeChange"-->
<!--@current-change="handleCurrentChange"-->
<!--:current-page.sync="currentPage"-->
<!--:page-sizes="[5, 10, 20, 50, 100]"-->
<!--:page-size="pageSize"-->
<!--layout="total, sizes, prev, pager, next, jumper"-->
<!--:total="total">-->
<!--</el-pagination>-->
<!--</div>-->
<!--</el-col>-->
<!--</el-row>-->
<!--</div>-->
<ms-table-pagination :change="initTableData" :current-page.sync="currentPage" :page-size.sync="pageSize"
:total="total"/>
@ -157,7 +140,7 @@
this.$emit('testPlanEdit', testPlan);
},
handleDelete(testPlan) {
this.$alert(this.$t('test_track.plan_delete_confirm') + testPlan.name + "", '', {
this.$alert(this.$t('test_track.plan.plan_delete_confirm') + testPlan.name + "", '', {
confirmButtonText: this.$t('commons.confirm'),
callback: (action) => {
if (action === 'confirm') {

View File

@ -16,15 +16,15 @@
<el-col :span="12">
<el-button plain size="mini"
icon="el-icon-back"
@click="cancel">返回</el-button>
@click="cancel">{{$t('test_track.return')}}</el-button>
</el-col>
<el-col :span="12" class="head-right">
<span class="head-right-tip" v-if="index + 1 == tableData.length">
上一条用例 : {{tableData ? tableData[index - 1].name : ''}}
{{$t('test_track.plan_view.pre_case')}} : {{tableData ? tableData[index - 1].name : ''}}
</span>
<span class="head-right-tip" v-if="index + 1 < tableData.length">
下一条用例 : {{tableData ? tableData[index + 1].name : ''}}
{{$t('test_track.plan_view.next_case')}} : {{tableData ? tableData[index + 1].name : ''}}
</span>
<el-button plain size="mini" icon="el-icon-arrow-up"
@ -52,12 +52,12 @@
<div class="case_container">
<el-row >
<el-col :span="4" :offset="1">
<span class="cast_label">{{$t('test_track.priority')}}</span>
<span class="cast_label">{{$t('test_track.case.priority')}}</span>
<span class="cast_item">{{testCase.priority}}</span>
</el-col>
<el-col :span="5">
<span class="cast_label">{{$t('test_track.case_type')}}</span>
<span class="cast_item" v-if="testCase.type == 'functional'">{{$t('test_track.functional_test')}}</span>
<span class="cast_label">{{$t('test_track.case.case_type')}}</span>
<span class="cast_item" v-if="testCase.type == 'functional'">{{$t('commons.functional')}}</span>
<span class="cast_item" v-if="testCase.type == 'performance'">{{$t('commons.performance')}}</span>
<span class="cast_item" v-if="testCase.type == 'api'">{{$t('commons.api')}}</span>
</el-col>
@ -70,12 +70,12 @@
<el-row>
<el-col :span="4" :offset="1">
<span class="cast_label">{{$t('test_track.method')}}</span>
<span v-if="testCase.method == 'manual'">{{$t('test_track.manual')}}</span>
<span v-if="testCase.method == 'auto'">{{$t('test_track.auto')}}</span>
<span class="cast_label">{{$t('test_track.case.method')}}</span>
<span v-if="testCase.method == 'manual'">{{$t('test_track.case.manual')}}</span>
<span v-if="testCase.method == 'auto'">{{$t('test_track.case.auto')}}</span>
</el-col>
<el-col :span="5">
<span class="cast_label">{{$t('test_track.module')}}</span>
<span class="cast_label">{{$t('test_track.case.module')}}</span>
<span class="cast_item">{{testCase.nodePath}}</span>
</el-col>
</el-row>
@ -83,7 +83,7 @@
<el-row>
<el-col :span="20" :offset="1">
<div>
<span class="cast_label">测试步骤</span>
<span class="cast_label">{{$t('test_track.case.steps')}}</span>
</div>
<el-table
:data="testCase.steptResults"
@ -93,18 +93,18 @@
:border="true"
:default-sort = "{prop: 'num', order: 'ascending'}"
highlight-current-row>
<el-table-column :label="$t('test_track.number')" prop="num" min-width="5%"></el-table-column>
<el-table-column :label="$t('test_track.step_desc')" prop="desc" min-width="29%">
<el-table-column :label="$t('test_track.case.number')" prop="num" min-width="5%"></el-table-column>
<el-table-column :label="$t('test_track.case.step_desc')" prop="desc" min-width="29%">
<template v-slot:default="scope">
<span>{{scope.row.desc}}</span>
</template>
</el-table-column>
<el-table-column :label="$t('test_track.expected_results')" prop="result" min-width="28%">
<el-table-column :label="$t('test_track.case.expected_results')" prop="result" min-width="28%">
<template v-slot:default="scope">
<span>{{scope.row.result}}</span>
</template>
</el-table-column>
<el-table-column :label="$t('test_track.actual_result')" min-width="29%">
<el-table-column :label="$t('test_track.plan_view.actual_result')" min-width="29%">
<template v-slot:default="scope">
<el-input
size="mini"
@ -116,15 +116,15 @@
<span>{{scope.row.actualResult}}</span>
</template>
</el-table-column>
<el-table-column :label="$t('test_track.step_result')" min-width="9%">
<el-table-column :label="$t('test_track.plan_view.step_result')" min-width="9%">
<template v-slot:default="scope">
<el-select
v-model="scope.row.executeResult"
size="mini">
<el-option :label="$t('test_track.pass')" value="Pass" style="color: #7ebf50;"></el-option>
<el-option :label="$t('test_track.failure')" value="Failure" style="color: #e57471;"></el-option>
<el-option :label="$t('test_track.blocking')" value="Blocking" style="color: #dda451;"></el-option>
<el-option :label="$t('test_track.skip')" value="Skip" style="color: #919399;"></el-option>
<el-option :label="$t('test_track.plan_view.pass')" value="Pass" style="color: #7ebf50;"></el-option>
<el-option :label="$t('test_track.plan_view.failure')" value="Failure" style="color: #e57471;"></el-option>
<el-option :label="$t('test_track.plan_view.blocking')" value="Blocking" style="color: #dda451;"></el-option>
<el-option :label="$t('test_track.plan_view.skip')" value="Skip" style="color: #919399;"></el-option>
</el-select>
</template>
</el-table-column>
@ -200,7 +200,7 @@
param.results = JSON.stringify(param.results);
this.$post('/test/plan/case/edit', param, () => {
this.$refs.drawer.closeDrawer();
this.$message.success("保存成功!");
this.$message.success(this.$t('commons.save_success'));
this.$emit('refresh');
});
},

View File

@ -5,23 +5,23 @@
<template v-slot:header>
<div>
<el-row type="flex" justify="space-between" align="middle">
<span class="title">{{$t('test_track.test_case')}}
<span class="title">{{$t('test_track.case.test_case')}}
<ms-tip-button v-if="!showMyTestCase"
:tip="'我的用例'"
:tip="$t('test_track.plan_view.my_case')"
icon="el-icon-s-custom" @click="searchMyTestCase"/>
<ms-tip-button v-if="showMyTestCase"
:tip="'全部用例'"
:tip="$t('test_track.plan_view.all_case')"
icon="el-icon-files" @click="searchMyTestCase"/></span>
<span class="operate-button">
<el-button icon="el-icon-connection" size="small" round
@click="$emit('openTestCaseRelevanceDialog')" >{{$t('test_track.relevance_test_case')}}</el-button>
@click="$emit('openTestCaseRelevanceDialog')" >{{$t('test_track.plan_view.relevance_test_case')}}</el-button>
<el-button icon="el-icon-edit-outline" size="small" round
@click="handleBatch('status')" >更改执行结果</el-button>
@click="handleBatch('status')" >{{$t('test_track.plan_view.change_execution_results')}}</el-button>
<el-button icon="el-icon-user" size="small" round
@click="handleBatch('executor')" >更改执行人</el-button>
@click="handleBatch('executor')" >{{$t('test_track.plan_view.change_executor')}}</el-button>
<el-input type="text" size="small"
class="search"
@ -59,7 +59,7 @@
</el-table-column>
<el-table-column
prop="priority"
:label="$t('test_track.priority')">
:label="$t('test_track.case.priority')">
<template v-slot:default="scope">
<el-tag v-if="scope.row.priority == 'P0'"
type="danger"
@ -82,10 +82,10 @@
<el-table-column
prop="type"
:label="$t('test_track.type')"
:label="$t('test_track.case.type')"
show-overflow-tooltip>
<template v-slot:default="scope">
<span v-if="scope.row.type == 'functional'">{{$t('test_track.functional_test')}}</span>
<span v-if="scope.row.type == 'functional'">{{$t('commons.functional')}}</span>
<span v-if="scope.row.type == 'performance'">{{$t('commons.performance')}}</span>
<span v-if="scope.row.type == 'api'">{{$t('commons.api')}}</span>
</template>
@ -93,44 +93,44 @@
<el-table-column
prop="method"
:label="$t('test_track.method')"
:label="$t('test_track.case.method')"
show-overflow-tooltip>
<template v-slot:default="scope">
<span v-if="scope.row.method == 'manual'">{{$t('test_track.manual')}}</span>
<span v-if="scope.row.method == 'auto'">{{$t('test_track.auto')}}</span>
<span v-if="scope.row.method == 'manual'">{{$t('test_track.case.manual')}}</span>
<span v-if="scope.row.method == 'auto'">{{$t('test_track.case.auto')}}</span>
</template>
</el-table-column>
<el-table-column
prop="executor"
:label="$t('test_track.executor')">
:label="$t('test_track.plan_view.executor')">
</el-table-column>
<el-table-column
prop="status"
:label="$t('test_track.execute_result')">
:label="$t('test_track.plan_view.execute_result')">
<template v-slot:default="scope">
<el-tag v-if="scope.row.status == 'Prepare'"
type="info"
effect="dark"
size="mini">{{$t('test_track.plan_status_prepare')}}</el-tag>
size="mini">{{$t('test_track.plan.plan_status_prepare')}}</el-tag>
<el-tag v-if="scope.row.status == 'Pass'"
type="success"
effect="dark"
size="mini">{{$t('test_track.pass')}}</el-tag>
size="mini">{{$t('test_track.plan_view.pass')}}</el-tag>
<el-tag v-if="scope.row.status == 'Failure'"
type="danger"
effect="dark"
size="mini">{{$t('test_track.failure')}}</el-tag>
size="mini">{{$t('test_track.plan_view.failure')}}</el-tag>
<el-tag v-if="scope.row.status == 'Blocking'"
type="warning"
effect="dark"
size="mini">{{$t('test_track.blocking')}}</el-tag>
size="mini">{{$t('test_track.plan_view.blocking')}}</el-tag>
<el-tag v-if="scope.row.status == 'Skip'"
type="info"
effect="dark"
size="mini">{{$t('test_track.skip')}}</el-tag>
size="mini">{{$t('test_track.plan_view.skip')}}</el-tag>
</template>
</el-table-column>
@ -227,7 +227,7 @@
this.$refs.testPlanTestCaseEdit.showDialog = true;
},
handleDelete(testCase) {
this.$alert(this.$t('test_track.confirm_cancel_relevance') + ' ' + testCase.name + " ", '', {
this.$alert(this.$t('test_track.plan_view.confirm_cancel_relevance') + ' ' + testCase.name + " ", '', {
confirmButtonText: this.$t('commons.confirm'),
callback: (action) => {
if (action === 'confirm') {
@ -265,7 +265,7 @@
},
handleBatch(type){
if (this.selectIds.size < 1) {
this.$message.warning('请选择需要操作的数据');
this.$message.warning(this.$t('test_track.plan_view.select_manipulate'));
return;
}
if (type === 'executor'){

View File

@ -38,8 +38,9 @@ export default {
'personal_setting': 'Personal Setting',
'test_resource_pool': 'Resource Pool',
'system_setting': 'Settings',
'api': 'Api',
'performance': 'Performance',
'api': 'Api test',
'performance': 'Performance test',
'functional': 'Functional test',
'input_content': 'Please enter content',
'create': 'Create',
'refresh': 'Refresh',
@ -171,78 +172,112 @@ export default {
'select_resource_pool': 'Please select resource pool'
},
test_track: {
'test_track': 'Test Track',
'test_case': 'Test Case',
'case_list': 'Test Case List',
'create_case': 'Create Case',
'test_plan': 'Test Plan',
'no_project': 'There is no project in this workspace, please create the project first',
'priority': 'Priority',
'type': 'Type',
'method': 'The test way',
'auto': 'Auto',
'manual': 'Manual',
'create': 'Create test case',
'name': 'Test case name',
'module': 'Subordinate to the module',
'maintainer': 'Maintainer',
'steps': 'Steps',
'number': 'Number',
'prerequisite': 'Prerequisite',
'step_desc': 'Step describe',
'expected_results': 'Expected results',
'confirm': 'confirm',
'cancel': 'cancel',
'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',
'search_module': 'Search module',
'rename': 'Rename',
'add_submodule': 'Add submodule',
'add_module': 'Add module',
'module_name': 'Module name',
'create_plan': 'Create test plan',
'plan_name': 'Test plan name',
'plan_project': 'Related project',
'plan_stage': 'Testing phase',
'plan_status': 'Status',
'smoke_test': 'Smoke test',
'functional_test': 'Functional test',
'integration_testing': 'Integration testing',
'system_test': 'System test',
'version_validation': 'Version validation',
'plan_principal': 'Principal',
'input_plan_principal': 'Please select principal',
'input_plan_project': 'Please select project',
'input_plan_stage': 'Please select stage',
'plan_status_prepare': 'Not started',
'plan_status_running': 'Starting',
'plan_status_completed': 'Completed',
'delete_module_confirm': 'Confirm delete module: ',
'delete_module_resource': 'and all submodules and test cases under the module',
'relevance_test_case': 'Relevance test case',
'executor': 'executor',
'execute_result': 'Execute result',
'case_type': 'Case type',
'pass': 'Pass',
'failure': 'Failure',
'blocking': 'Blocking',
'skip': 'Skip',
'actual_result': 'Actual result',
'step_result': 'Step result',
'select_execute_result': 'Select execute result',
'save': 'Save',
'confirm_cancel_relevance': 'Confirm cancel relevance',
'plan': 'Plan',
'project': 'Project',
'recent_plan': 'Recent plan',
'recent_case': 'Recent case',
'plan_delete_confirm': 'Confirm delete test plan: ',
'case_delete_confirm': 'Confirm delete test case: ',
test_track: "Test Track",
confirm: "Confirm",
cancel: "Cancel",
project: "Project",
save: "Save",
return: "Return",
recent_plan: "Recent plan",
recent_case: "Recent case",
case: {
test_case: "Test Case",
case_list: "Test Case List",
create_case: "Create Case",
no_project: "There is no project in this workspace, please create the project first",
priority: "Priority",
type: "Type",
method: "The test way",
auto: "Auto",
manual: "Manual",
create: "Create test case",
case_type: "Case Type",
name: "Test case name",
module: "Subordinate to the module",
maintainer: "Maintainer",
steps: "Steps",
number: "Number",
prerequisite: "Prerequisite",
step_desc: "Step describe",
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",
delete_confirm: "Confirm delete test case: ",
import: {
import: "Import test case",
case_import: "Import test case",
download_template: "Download template",
click_upload: "Upload",
upload_limit: "Only XLS/XLSX files can be uploaded, and no more than 20M",
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 20MB!",
success: "Import success",
},
export: {
export: "Export cases"
}
},},
plan: {
test_plan: "Test Plan",
create_plan: "Create test plan",
plan_name: "Test plan name",
plan_project: "Related project",
plan_stage: "Testing phase",
plan_status: "Status",
smoke_test: "Smoke test",
functional_test: "Functional test",
integration_testing: "Integration testing",
system_test: "System 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_plan_stage: "Please select stage",
plan_status_prepare: "Not started",
plan_status_running: "Starting",
plan_status_completed: "Completed",
plan_delete_confirm: "Confirm delete test plan: ",
},
module: {
search: "Search module",
rename: "Rename",
add_submodule: "Add submodule",
add_module: "Add module",
name: "Module name",
delete_confirm: "Confirm delete module:",
delete_all_resource: "and all submodules and test cases under the module",
},
plan_view: {
plan: "Plan",
relevance_test_case: "Relevance test case",
executor: "Executor",
execute_result: "Execute result",
pass: "Pass",
failure: "Failure",
blocking: "Blocking",
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 execution results",
change_executor: "Change executor",
select_executor: "Select executor",
select_execute_result: "Select execute result",
confirm_cancel_relevance: "Confirm cancel relevance",
select_manipulate: "Select the data you want to manipulate",
},
test_resource_pool: {
'type': 'type',

View File

@ -40,6 +40,7 @@ export default {
'system_setting': '系统设置',
'api': '接口测试',
'performance': '性能测试',
'functional': '功能测试',
'input_content': '请输入内容',
'create': '新建',
'refresh': '刷新',
@ -212,83 +213,110 @@ export default {
}
},
test_track: {
// test_track: "测试跟踪",
// case: {
//
//
// },
'test_track': '测试跟踪',
'test_case': '测试用例',
'case_list': '用例列表',
'create_case': '创建用例',
'test_plan': '测试计划',
'no_project': '该工作空间下无项目,请先创建项目',
'priority': '优先级',
'type': '类型',
'method': '测试方式',
'auto': '自动',
'manual': '手动',
'create': '新建用例',
'name': '用例名称',
'module': '所属模块',
'maintainer': '维护人',
'steps': '执行步骤',
'number': '编号',
'prerequisite': '前置条件',
'step_desc': '步骤描述',
'expected_results': '预期结果',
'confirm': '确 定',
'cancel': '取 消',
'input_name': '请输入名称',
'input_module': '请选择模块',
'input_maintainer': '请选择维护人',
'input_priority': '请选择优先级',
'input_type': '请选择用例类型',
'input_method': '请选择测试方式',
'input_prerequisite': '请输入前置条件',
'search_module': '搜索模块',
'rename': '重命名',
'add_submodule': '添加子模块',
'add_module': '添加模块',
'module_name': '模块名称',
'create_plan': '创建测试计划',
'plan_name': '计划名称',
'plan_project': '所属项目',
'plan_stage': '测试阶段',
'plan_status': '当前状态',
'smoke_test': '冒烟测试',
'functional_test': '功能测试',
'integration_testing': '集成测试',
'system_test': '系统测试',
'version_validation': '版本验证',
'plan_principal': '负责人',
'input_plan_principal': '请选择负责人',
'input_plan_project': '请选择所属项目',
'input_plan_stage': '请选择测试阶段',
'plan_status_prepare': '未开始',
'plan_status_running': '进行中',
'plan_status_completed': '已完成',
'delete_module_confirm': '确认删除模块: ',
'delete_module_resource': '以及模块下所有子模块和测试用例',
'relevance_test_case': '关联测试用例',
'executor': '执行人',
'execute_result': '执行结果',
'case_type': '用例类型',
'pass': '通过',
'failure': '失败',
'blocking': '阻塞',
'skip': '跳过',
'actual_result': '实际结果',
'step_result': '步骤执行结果',
'select_execute_result': '选择执行结果',
'save': '保 存',
'confirm_cancel_relevance': '确认取消关联',
'plan': '计划',
'project': '项目',
'recent_plan': '最近的计划',
'recent_case': '最近的用例',
'plan_delete_confirm': '确认删除测试计划: ',
'case_delete_confirm': '确认删除测试用例: ',
test_track: "测试跟踪",
confirm: "确 定",
cancel: "取 消",
project: "项目",
save: "保 存",
return: "返 回",
recent_plan: "最近的计划",
recent_case: "最近的用例",
case: {
test_case: "测试用例",
case_list: "用例列表",
create_case: "创建用例",
no_project: "该工作空间下无项目,请先创建项目",
priority: "优先级",
type: "类型",
method: "测试方式",
auto: "自动",
manual: "手动",
create: "新建用例",
case_type: "用例类型",
name: "用例名称",
module: "所属模块",
maintainer: "维护人",
steps: "执行步骤",
number: "编号",
prerequisite: "前置条件",
step_desc: "步骤描述",
expected_results: "预期结果",
input_name: "请输入名称",
input_module: "请选择模块",
input_maintainer: "请选择维护人",
input_priority: "请选择优先级",
input_type: "请选择用例类型",
input_method: "请选择测试方式",
input_prerequisite: "请输入前置条件",
delete_confirm: "确认删除测试用例: ",
import: {
import: "导入用例",
case_import: "导入测试用例",
download_template: "下载模版",
click_upload: "点击上传",
upload_limit: "只能上传xls/xlsx文件且不超过20M",
upload_limit_count: "一次只能上传一个文件",
upload_limit_format: "上传文件只能是 xls、xlsx格式!",
upload_limit_size: "上传文件大小不能超过 20MB!",
success: "导入成功!",
},
export: {
export: "导出用例"
}
},
plan: {
test_plan: "测试计划",
create_plan: "创建测试计划",
plan_name: "计划名称",
plan_project: "所属项目",
plan_stage: "测试阶段",
plan_status: "当前状态",
smoke_test: "冒烟测试",
functional_test: "功能测试",
integration_testing: "集成测试",
system_test: "系统测试",
version_validation: "版本验证",
plan_principal: "负责人",
input_plan_name: "请输入测试计划名称",
input_plan_principal: "请选择负责人",
input_plan_project: "请选择所属项目",
input_plan_stage: "请选择测试阶段",
plan_status_prepare: "未开始",
plan_status_running: "进行中",
plan_status_completed: "已完成",
plan_delete_confirm: "确认删除测试计划: ",
},
module: {
search: "搜索模块",
rename: "重命名",
add_submodule: "添加子模块",
add_module: "添加模块",
name: "模块名称",
delete_confirm: "确认删除模块: ",
delete_all_resource: "以及模块下所有子模块和测试用例",
},
plan_view: {
plan: "计划",
relevance_test_case: "关联测试用例",
executor: "执行人",
execute_result: "执行结果",
pass: "通过",
failure: "失败",
blocking: "阻塞",
skip: "跳过",
actual_result: "实际结果",
step_result: "步骤执行结果",
my_case: "我的用例",
all_case: "全部用例",
pre_case: "上一条用例",
next_case: "下一条用例",
change_execution_results: "更改执行结果",
change_executor: "更改执行人",
select_executor: "请选择执行人",
select_execute_result: "选择执行结果",
confirm_cancel_relevance: "确认取消关联",
select_manipulate: "请选择需要操作的数据",
}
},
test_resource_pool: {
'type': '类型',