Merge branch 'master' of https://github.com/metersphere/metersphere
This commit is contained in:
commit
a3d98b5921
14
ROADMAP.md
14
ROADMAP.md
|
@ -46,14 +46,14 @@
|
|||
- [x] 接口测试支持TCP协议请求
|
||||
- [x] 全新的消息通知设置,支持企业微信、钉钉机器人通知
|
||||
|
||||
## v1.5 (开发中)
|
||||
## v1.5 (已发布)
|
||||
|
||||
- [ ] 性能测试:优化并发数、持续时间等压力配置方式
|
||||
- [ ] 性能测试:支持使用了额外插件的 JMX 文件
|
||||
- [ ] 性能测试:自动修改 csv 等数据文件引用路径
|
||||
- [ ] 性能测试:优化性能测试报告展示
|
||||
- [ ] 测试跟踪:支持对接禅道同步缺陷
|
||||
- [ ] 其他:Jenkins 插件支持 pipeline 方式调用
|
||||
- [x] 性能测试:优化并发数、持续时间等压力配置方式
|
||||
- [x] 性能测试:支持使用了额外插件的 JMX 文件
|
||||
- [x] 性能测试:自动修改 csv 等数据文件引用路径
|
||||
- [x] 性能测试:优化性能测试报告展示
|
||||
- [x] 测试跟踪:支持对接禅道同步缺陷
|
||||
- [x] 其他:Jenkins 插件支持 pipeline 方式调用
|
||||
|
||||
## 规划中
|
||||
|
||||
|
|
|
@ -78,7 +78,7 @@
|
|||
</el-header>
|
||||
|
||||
<!-- 用例部分 -->
|
||||
<el-main v-loading="loading">
|
||||
<el-main v-loading="loading" style="overflow: auto">
|
||||
<div v-for="(item,index) in apiCaseList" :key="index">
|
||||
<el-card style="margin-top: 5px" @click.native="selectTestCase(item,$event)">
|
||||
<el-row>
|
||||
|
@ -188,6 +188,7 @@
|
|||
},
|
||||
loaded: Boolean,
|
||||
currentProject: {},
|
||||
refreshSign: String,
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
|
@ -213,6 +214,9 @@
|
|||
},
|
||||
currentProject() {
|
||||
this.getEnvironments();
|
||||
},
|
||||
refreshSign() {
|
||||
this.getApiTest();
|
||||
}
|
||||
},
|
||||
created() {
|
||||
|
|
|
@ -1,12 +1,9 @@
|
|||
<template>
|
||||
|
||||
|
||||
<div id="svgBox" style="overflow: auto">
|
||||
<div id="svgTop" style="background-color: white">
|
||||
<el-card class="card-content">
|
||||
<!--<ms-table-header :showCreate="false" :condition.sync="condition" @search="search"-->
|
||||
<!--:title="$t('api_test.definition.api_title')"/>-->
|
||||
<el-input placeholder="搜索" @blur="search" style="float: right ;width: 300px;margin-bottom: 20px;margin-right: 20px" size="small" v-model="condition.name"/>
|
||||
|
||||
<el-table border :data="tableData" row-key="id" class="test-content adjust-table"
|
||||
@select-all="handleSelectAll"
|
||||
@select="handleSelect" :height="screenHeight">
|
||||
|
@ -272,7 +269,6 @@
|
|||
},
|
||||
handleTestCase(testCase) {
|
||||
let h = window.screen.height;
|
||||
|
||||
let svgTop = document.getElementById("svgTop");
|
||||
svgTop.style.height = h / 2 - 200 + "px";
|
||||
|
||||
|
|
|
@ -3,8 +3,7 @@
|
|||
<el-row>
|
||||
<el-col :span="21" style="padding-bottom: 20px">
|
||||
<div style="border:1px #DCDFE6 solid; height: 100%;border-radius: 4px ;width: 100% ;margin: 20px">
|
||||
<el-form :model="request" :rules="rules" ref="request" label-width="100px" :disabled="isReadOnly" style="margin: 20px">
|
||||
|
||||
<el-form :model="request" :rules="rules" ref="request" label-width="100px" :disabled="isReadOnly" style="margin: 10px">
|
||||
<el-row>
|
||||
<el-col :span="8">
|
||||
<el-form-item prop="environmentId" :label="$t('api_test.definition.request.run_env')">
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
<el-col :span="21" style="padding-bottom: 20px">
|
||||
<div style="border:1px #DCDFE6 solid; height: 100%;border-radius: 4px ;width: 100% ;margin: 20px">
|
||||
|
||||
<el-form :model="request" ref="request" label-width="100px" :disabled="isReadOnly" style="margin: 20px">
|
||||
<el-form :model="request" ref="request" label-width="100px" :disabled="isReadOnly" style="margin: 10px">
|
||||
|
||||
<el-form-item :label="$t('api_test.request.dubbo.protocol')" prop="protocol">
|
||||
<el-select v-model="request.protocol" size="small">
|
||||
|
|
|
@ -2,9 +2,8 @@
|
|||
<div>
|
||||
<el-row>
|
||||
<el-col :span="21" style="padding-bottom: 20px">
|
||||
<div style="border:1px #DCDFE6 solid; height: 100%;border-radius: 4px ;width: 100% ;margin: 20px">
|
||||
<div style="border:1px #DCDFE6 solid; height: 100%;border-radius: 4px ;width: 100% ;margin: 10px">
|
||||
<el-form class="tcp" :model="request" :rules="rules" ref="request" label-width="auto" :disabled="isReadOnly" style="margin: 20px">
|
||||
|
||||
<el-row :gutter="10">
|
||||
<el-col :span="9">
|
||||
<el-form-item label="TCPClient" prop="classname">
|
||||
|
|
|
@ -51,11 +51,11 @@
|
|||
|
||||
<style scoped>
|
||||
.metric-container {
|
||||
padding: 20px;
|
||||
padding: 10px;
|
||||
}
|
||||
|
||||
.metric {
|
||||
padding: 20px;
|
||||
padding: 10px;
|
||||
border: 1px solid #EBEEF5;
|
||||
min-width: 120px;
|
||||
height: 114px;
|
||||
|
|
|
@ -19,7 +19,7 @@
|
|||
|
||||
<p class="tip">{{$t('api_test.definition.request.req_param')}} </p>
|
||||
<!-- TCP 请求参数 -->
|
||||
<ms-basis-parameters :request="currentRequest" :currentProject="currentProject" ref="requestForm"/>
|
||||
<ms-basis-parameters :request="api.request" :currentProject="currentProject" ref="requestForm"/>
|
||||
|
||||
<!--返回结果-->
|
||||
<!-- HTTP 请求返回数据 -->
|
||||
|
@ -29,11 +29,12 @@
|
|||
</el-card>
|
||||
|
||||
<!-- 加载用例 -->
|
||||
<ms-bottom-container v-bind:enableAsideHidden="isHide">
|
||||
<el-drawer :visible.sync="visible" direction="btt" :with-header="false" :modal="false" size="50%">
|
||||
<ms-api-case-list @apiCaseClose="apiCaseClose" @selectTestCase="selectTestCase" :api="api"
|
||||
:currentProject="currentProject" :loaded="loaded"
|
||||
:currentProject="currentProject" :loaded="loaded" :refreshSign="refreshSign"
|
||||
ref="caseList"/>
|
||||
</ms-bottom-container>
|
||||
</el-drawer>
|
||||
>
|
||||
|
||||
<!-- 环境 -->
|
||||
<api-environment-config ref="environmentConfig" @close="environmentConfigClose"/>
|
||||
|
@ -72,11 +73,12 @@
|
|||
},
|
||||
data() {
|
||||
return {
|
||||
isHide: true,
|
||||
visible: false,
|
||||
api: {},
|
||||
loaded: false,
|
||||
loading: false,
|
||||
currentRequest: {},
|
||||
refreshSign: "",
|
||||
responseData: {type: 'HTTP', responseResult: {}, subRequestResults: []},
|
||||
reqOptions: REQ_METHOD,
|
||||
environments: [],
|
||||
|
@ -102,7 +104,7 @@
|
|||
case "save_as_api":
|
||||
return this.saveAsApi();
|
||||
default:
|
||||
return this.runTest();
|
||||
return this.runTest();
|
||||
}
|
||||
},
|
||||
runTest() {
|
||||
|
@ -122,11 +124,12 @@
|
|||
this.$emit('saveAs', this.api);
|
||||
},
|
||||
loadCase() {
|
||||
this.refreshSign = getUUID();
|
||||
this.loaded = true;
|
||||
this.isHide = false;
|
||||
this.visible = true;
|
||||
},
|
||||
apiCaseClose() {
|
||||
this.isHide = true;
|
||||
this.visible = false;
|
||||
},
|
||||
getBodyUploadFiles() {
|
||||
let bodyUploadFiles = [];
|
||||
|
@ -150,7 +153,7 @@
|
|||
return bodyUploadFiles;
|
||||
},
|
||||
saveAsCase() {
|
||||
this.isHide = false;
|
||||
this.visible = false;
|
||||
this.loaded = false;
|
||||
this.$refs.caseList.addCase();
|
||||
},
|
||||
|
@ -256,6 +259,9 @@
|
|||
font-size: 16px;
|
||||
border-radius: 4px;
|
||||
border-left: 4px solid #783887;
|
||||
margin: 20px 0;
|
||||
}
|
||||
|
||||
/deep/ .el-drawer {
|
||||
overflow: auto;
|
||||
}
|
||||
</style>
|
||||
|
|
|
@ -70,11 +70,11 @@
|
|||
</el-card>
|
||||
|
||||
<!-- 加载用例 -->
|
||||
<ms-bottom-container v-bind:enableAsideHidden="isHide">
|
||||
<ms-api-case-list @apiCaseClose="apiCaseClose" @selectTestCase="selectTestCase" :api="api"
|
||||
<el-drawer :visible.sync="visible" direction="btt" :with-header="false" :modal="false" size="50%">
|
||||
<ms-api-case-list @apiCaseClose="apiCaseClose" @selectTestCase="selectTestCase" :api="api" :refreshSign="refreshSign"
|
||||
:currentProject="currentProject" :loaded="loaded"
|
||||
ref="caseList"/>
|
||||
</ms-bottom-container>
|
||||
</el-drawer>
|
||||
|
||||
<!-- 环境 -->
|
||||
<api-environment-config ref="environmentConfig" @close="environmentConfigClose"/>
|
||||
|
@ -90,7 +90,6 @@
|
|||
import {downloadFile, getUUID} from "@/common/js/utils";
|
||||
import MsApiCaseList from "../ApiCaseList";
|
||||
import MsContainer from "../../../../common/components/MsContainer";
|
||||
import MsBottomContainer from "../BottomContainer";
|
||||
import {parseEnvironment} from "../../model/EnvironmentModel";
|
||||
import ApiEnvironmentConfig from "../environment/ApiEnvironmentConfig";
|
||||
import MsRequestResultTail from "../response/RequestResultTail";
|
||||
|
@ -104,18 +103,18 @@
|
|||
MsApiRequestForm,
|
||||
MsApiCaseList,
|
||||
MsContainer,
|
||||
MsBottomContainer,
|
||||
MsRequestResultTail,
|
||||
ApiEnvironmentConfig,
|
||||
MsRun
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
isHide: true,
|
||||
visible: false,
|
||||
api: {},
|
||||
loaded: false,
|
||||
loading: false,
|
||||
currentRequest: {},
|
||||
refreshSign:"",
|
||||
responseData: {type: 'HTTP', responseResult: {}, subRequestResults: []},
|
||||
reqOptions: REQ_METHOD,
|
||||
environments: [],
|
||||
|
@ -166,11 +165,12 @@
|
|||
this.$emit('saveAs', this.api);
|
||||
},
|
||||
loadCase() {
|
||||
this.refreshSign = getUUID();
|
||||
this.loaded = true;
|
||||
this.isHide = false;
|
||||
this.visible = true;
|
||||
},
|
||||
apiCaseClose() {
|
||||
this.isHide = true;
|
||||
this.visible = false;
|
||||
},
|
||||
getBodyUploadFiles() {
|
||||
let bodyUploadFiles = [];
|
||||
|
@ -194,9 +194,8 @@
|
|||
return bodyUploadFiles;
|
||||
},
|
||||
saveAsCase() {
|
||||
this.isHide = false;
|
||||
this.visible = false;
|
||||
this.loaded = false;
|
||||
this.$refs.caseList.addCase();
|
||||
},
|
||||
saveAsApi() {
|
||||
let data = {};
|
||||
|
@ -301,6 +300,8 @@
|
|||
font-size: 16px;
|
||||
border-radius: 4px;
|
||||
border-left: 4px solid #783887;
|
||||
margin: 20px 0;
|
||||
}
|
||||
/deep/.el-drawer{
|
||||
overflow: auto;
|
||||
}
|
||||
</style>
|
||||
|
|
|
@ -16,10 +16,9 @@
|
|||
</el-dropdown-menu>
|
||||
</el-dropdown>
|
||||
|
||||
|
||||
<p class="tip">{{$t('api_test.definition.request.req_param')}} </p>
|
||||
<!-- TCP 请求参数 -->
|
||||
<ms-basis-parameters :request="currentRequest" @callback="runTest" :currentProject="currentProject" ref="requestForm"/>
|
||||
<ms-basis-parameters :request="api.request" @callback="runTest" :currentProject="currentProject" ref="requestForm"/>
|
||||
|
||||
<!--返回结果-->
|
||||
<!-- HTTP 请求返回数据 -->
|
||||
|
@ -29,11 +28,11 @@
|
|||
</el-card>
|
||||
|
||||
<!-- 加载用例 -->
|
||||
<ms-bottom-container v-bind:enableAsideHidden="isHide">
|
||||
<ms-api-case-list @apiCaseClose="apiCaseClose" @selectTestCase="selectTestCase" :api="api"
|
||||
<el-drawer :visible.sync="visible" direction="btt" :with-header="false" :modal="false" size="50%">
|
||||
<ms-api-case-list @apiCaseClose="apiCaseClose" @selectTestCase="selectTestCase" :api="api" :refreshSign="refreshSign"
|
||||
:currentProject="currentProject" :loaded="loaded"
|
||||
ref="caseList"/>
|
||||
</ms-bottom-container>
|
||||
</el-drawer>>
|
||||
|
||||
<!-- 环境 -->
|
||||
<api-environment-config ref="environmentConfig" @close="environmentConfigClose"/>
|
||||
|
@ -72,13 +71,14 @@
|
|||
},
|
||||
data() {
|
||||
return {
|
||||
isHide: true,
|
||||
visible: false,
|
||||
api: {},
|
||||
loaded: false,
|
||||
loading: false,
|
||||
currentRequest: {},
|
||||
responseData: {type: 'HTTP', responseResult: {}, subRequestResults: []},
|
||||
reqOptions: REQ_METHOD,
|
||||
refreshSign: "",
|
||||
environments: [],
|
||||
rules: {
|
||||
method: [{required: true, message: this.$t('test_track.case.input_maintainer'), trigger: 'change'}],
|
||||
|
@ -122,11 +122,12 @@
|
|||
this.$emit('saveAs', this.api);
|
||||
},
|
||||
loadCase() {
|
||||
this.refreshSign = getUUID();
|
||||
this.loaded = true;
|
||||
this.isHide = false;
|
||||
this.visible = true;
|
||||
},
|
||||
apiCaseClose() {
|
||||
this.isHide = true;
|
||||
this.visible = false;
|
||||
},
|
||||
getBodyUploadFiles() {
|
||||
let bodyUploadFiles = [];
|
||||
|
@ -150,7 +151,7 @@
|
|||
return bodyUploadFiles;
|
||||
},
|
||||
saveAsCase() {
|
||||
this.isHide = false;
|
||||
this.visible = false;
|
||||
this.loaded = false;
|
||||
this.$refs.caseList.addCase();
|
||||
},
|
||||
|
@ -242,20 +243,13 @@
|
|||
</script>
|
||||
|
||||
<style scoped>
|
||||
.ms-htt-width {
|
||||
width: 350px;
|
||||
}
|
||||
|
||||
.environment-button {
|
||||
margin-left: 20px;
|
||||
padding: 7px;
|
||||
}
|
||||
|
||||
.tip {
|
||||
padding: 3px 5px;
|
||||
font-size: 16px;
|
||||
border-radius: 4px;
|
||||
border-left: 4px solid #783887;
|
||||
margin: 20px 0;
|
||||
}
|
||||
/deep/.el-drawer{
|
||||
overflow: auto;
|
||||
}
|
||||
</style>
|
||||
|
|
|
@ -19,7 +19,7 @@
|
|||
|
||||
<p class="tip">{{$t('api_test.definition.request.req_param')}} </p>
|
||||
<!-- TCP 请求参数 -->
|
||||
<ms-basis-parameters :request="currentRequest" @callback="runTest" :currentProject="currentProject" ref="requestForm"/>
|
||||
<ms-basis-parameters :request="api.request" @callback="runTest" :currentProject="currentProject" ref="requestForm"/>
|
||||
|
||||
<!--返回结果-->
|
||||
<!-- HTTP 请求返回数据 -->
|
||||
|
@ -29,11 +29,12 @@
|
|||
</el-card>
|
||||
|
||||
<!-- 加载用例 -->
|
||||
<ms-bottom-container v-bind:enableAsideHidden="isHide">
|
||||
<ms-api-case-list @apiCaseClose="apiCaseClose" @selectTestCase="selectTestCase" :api="api"
|
||||
<el-drawer :visible.sync="visible" direction="btt" :with-header="false" :modal="false" size="50%">
|
||||
<ms-api-case-list @apiCaseClose="apiCaseClose" @selectTestCase="selectTestCase" :api="api" :refreshSign="refreshSign"
|
||||
:currentProject="currentProject" :loaded="loaded"
|
||||
ref="caseList"/>
|
||||
</ms-bottom-container>
|
||||
</el-drawer>
|
||||
>
|
||||
|
||||
<!-- 环境 -->
|
||||
<api-environment-config ref="environmentConfig" @close="environmentConfigClose"/>
|
||||
|
@ -72,7 +73,7 @@
|
|||
},
|
||||
data() {
|
||||
return {
|
||||
isHide: true,
|
||||
visible: false,
|
||||
api: {},
|
||||
loaded: false,
|
||||
loading: false,
|
||||
|
@ -80,6 +81,7 @@
|
|||
responseData: {type: 'HTTP', responseResult: {}, subRequestResults: []},
|
||||
reqOptions: REQ_METHOD,
|
||||
environments: [],
|
||||
refreshSign: "",
|
||||
rules: {
|
||||
method: [{required: true, message: this.$t('test_track.case.input_maintainer'), trigger: 'change'}],
|
||||
url: [{required: true, message: this.$t('api_test.definition.request.path_info'), trigger: 'blur'}],
|
||||
|
@ -122,11 +124,12 @@
|
|||
this.$emit('saveAs', this.api);
|
||||
},
|
||||
loadCase() {
|
||||
this.refreshSign = getUUID();
|
||||
this.loaded = true;
|
||||
this.isHide = false;
|
||||
this.visible = true;
|
||||
},
|
||||
apiCaseClose() {
|
||||
this.isHide = true;
|
||||
this.visible = false;
|
||||
},
|
||||
getBodyUploadFiles() {
|
||||
let bodyUploadFiles = [];
|
||||
|
@ -150,7 +153,7 @@
|
|||
return bodyUploadFiles;
|
||||
},
|
||||
saveAsCase() {
|
||||
this.isHide = false;
|
||||
this.visible = false;
|
||||
this.loaded = false;
|
||||
this.$refs.caseList.addCase();
|
||||
},
|
||||
|
@ -256,6 +259,9 @@
|
|||
font-size: 16px;
|
||||
border-radius: 4px;
|
||||
border-left: 4px solid #783887;
|
||||
margin: 20px 0;
|
||||
}
|
||||
|
||||
/deep/ .el-drawer {
|
||||
overflow: auto;
|
||||
}
|
||||
</style>
|
||||
|
|
Loading…
Reference in New Issue