Browse Source

优化

master
陈裕财 3 years ago
parent
commit
dbd93b0cab
  1. 79
      src/views/xm/core/xmTestCase/XmTestCaseEdit.vue
  2. 2
      src/views/xm/core/xmTestCase/XmTestCaseMng.vue
  3. 2
      src/views/xm/core/xmTestCasedb/XmTestCasedbEnv.vue
  4. 2
      src/views/xm/core/xmTestPlan/XmTestPlanEnv.vue

79
src/views/xm/core/xmTestCase/XmTestCaseEdit.vue

@ -89,7 +89,7 @@
<i class="el-icon-edit"></i>{{autoStep.url}}
</div>
<div class="field-bar">
<el-input v-model="autoStep.url" placeholder="url 如${env.baseApi}/user/list,支持通过 ${env.变量名}引用环境变量"></el-input>
<el-input v-model="autoStep.url" placeholder="url 如#{baseApi}/user/list,支持通过 #{变量名}引用环境变量"></el-input>
</div>
</el-form-item>
<el-form-item label="请求方法">
@ -119,7 +119,7 @@
label="参数值"
min-width="250">
<template scope="scope">
<el-input v-model="scope.row.value" placeholder="支持通过 ${env.变量名}引用环境变量"></el-input>
<el-input v-model="scope.row.value" placeholder="支持通过 #{变量名}引用环境变量"></el-input>
</template>
</el-table-column>
<el-table-column label="操作" width="180">
@ -159,7 +159,7 @@
label="参数值"
min-width="250">
<template scope="scope">
<el-input v-model="scope.row.value" placeholder="支持通过 ${env.变量名}引用环境变量"></el-input>
<el-input v-model="scope.row.value" placeholder="支持通过 #{变量名}引用环境变量"></el-input>
</template>
</el-table-column>
<el-table-column label="操作" width="180">
@ -196,7 +196,7 @@
label="参数值"
min-width="250">
<template scope="scope">
<el-input v-model="scope.row.value" placeholder="支持通过 ${env.变量名}引用环境变量"></el-input>
<el-input v-model="scope.row.value" placeholder="支持通过 #{变量名}引用环境变量"></el-input>
</template>
</el-table-column>
<el-table-column label="操作" width="180">
@ -232,7 +232,7 @@
label="参数值"
min-width="250">
<template scope="scope">
<el-input v-model="scope.row.value" placeholder="支持通过 ${env.变量名}引用环境变量"></el-input>
<el-input v-model="scope.row.value" placeholder="支持通过 #{变量名}引用环境变量"></el-input>
</template>
</el-table-column>
<el-table-column label="操作" width="180">
@ -262,7 +262,7 @@
<i class="el-icon-edit"></i>{{basicAuth.username}}
</div>
<div class="field-bar">
<el-input v-model="basicAuth.username" placeholder="username 支持通过 ${env.变量名}引用环境变量" ></el-input>
<el-input v-model="basicAuth.username" placeholder="username 支持通过 #{变量名}引用环境变量" ></el-input>
</div>
</el-form-item>
<el-form-item label="password" class="field">
@ -270,7 +270,7 @@
<i class="el-icon-edit"></i>{{basicAuth.password||'暂无'}}
</div>
<div class="field-bar">
<el-input v-model="basicAuth.password" placeholder="password 支持通过 ${env.变量名}引用环境变量" ></el-input>
<el-input v-model="basicAuth.password" placeholder="password 支持通过 #{变量名}引用环境变量" ></el-input>
</div>
</el-form-item>
</el-row>
@ -281,7 +281,7 @@
<i class="el-icon-edit"></i>{{bearerToken.bearerToken}}
</div>
<div class="field-bar">
<el-input type="textarea" autosize v-model="bearerToken.bearerToken" placeholder="Bearer 支持通过 ${env.变量名}引用环境变量"></el-input>
<el-input type="textarea" autosize v-model="bearerToken.bearerToken" placeholder="Bearer 支持通过 #{变量名}引用环境变量"></el-input>
</div>
</el-form-item>
</el-row>
@ -292,6 +292,8 @@
</el-tab-pane>
<el-tab-pane name="17" label="响应" v-if="editForm.testType=='1'">
<el-row class="padding">可使用的变量 res={config:{协议配置},data:{接口返回的业务数据对象} ,headers:{协议头,key-value型},status:状态码如200/201 }</el-row>
<el-row class="padding">可使用的变量 env={key1:value1,key2:value2,等等},env为测试库环境变量及测试计划的环境变量合并重复则以测试计划的为准可通过env['key1']获取值</el-row>
<el-form-item label="成功与失败的逻辑判断">
<el-input type="textarea" :rows="10" v-model="autoStep.expectResult" placeholder="成功与失败的判断" ></el-input>
</el-form-item>
@ -632,20 +634,37 @@ import JsonViewer from 'vue-json-viewer'
var autoStepStr=JSON.stringify(autoStepObj)
this.editSomeFields(this.editForm,'autoStep',autoStepStr)
},
autoStepToAxios(autoStepObj){
parseEnvVarValue(valueTpl,env){
if(!env){
return valueTpl
}
if(!valueTpl){
return valueTpl;
}else{
var reg = /\#\{(\w+)\}/g;
var value=valueTpl.replace(reg,function(){
var arg=arguments;
var key=arguments[1]
return env[key]
})
return value
}
},
autoStepToAxios(autoStepObj,env){
var axiosObj={url:autoStepObj.url,method:autoStepObj.method}
//
if(autoStepObj.method=='GET'){
var params={}
autoStepObj.params.forEach(k=>{
params[k.id]=k.value
params[k.id]=this.parseEnvVarValue(k.value,env)
})
axiosObj.params=params
}else if(autoStepObj.method=='POST'){
var params={}
autoStepObj.params.forEach(k=>{
params[k.id]=k.value
params[k.id]=this.parseEnvVarValue(k.value,env)
})
axiosObj.params=params
if(autoStepObj.bodyType=='json'){
@ -657,13 +676,13 @@ import JsonViewer from 'vue-json-viewer'
}else if(autoStepObj.bodyType=='form-data'){
var data={}
autoStepObj.body.forEach(k=>{
data[k.id]=k.value
data[k.id]=this.parseEnvVarValue(k.value,env)
})
axiosObj.data=data;
}else if(autoStepObj.bodyType=='x-www-form-urlencoded'){
var data={}
autoStepObj.body.forEach(k=>{
data[k.id]=k.value
data[k.id]=this.parseEnvVarValue(k.value,env)
})
axiosObj.data=data;
}
@ -673,17 +692,16 @@ import JsonViewer from 'vue-json-viewer'
if(autoStepObj.headers){
axiosObj.headers={}
autoStepObj.headers.forEach(k=>{
axiosObj.headers[k.id]=k.value
axiosObj.headers[k.id]=this.parseEnvVarValue(k.value,env)
})
}else {
axiosObj.headers={}
}
debugger;
if(autoStepObj.authType=='bearer-token'){
axiosObj.headers['Authorization'] = 'Bearer '+autoStepObj.authData.bearerToken
if(autoStepObj.authType=='bearer-token'){
axiosObj.headers['Authorization'] = 'Bearer '+this.parseEnvVarValue(autoStepObj.authData.bearerToken,env)
}else if(autoStepObj.authType=='basic-auth'){
var username=autoStepObj.authData.username
var password=autoStepObj.authData.password
var username=this.parseEnvVarValue(autoStepObj.authData.username,env)
var password=this.parseEnvVarValue(autoStepObj.authData.password,env)
var authorizationBasic = window.btoa(username + ':' + password);
axiosObj.headers['Authorization'] = 'Basic '+authorizationBasic
}
@ -698,13 +716,30 @@ import JsonViewer from 'vue-json-viewer'
return axiosObj
},
sendMsgForTestSetting(){
debugger;
var autoStepObj=this.calcAutoStep();
if(!autoStepObj.url){
this.$notify({position:'bottom-left',showClose:true,message:'url不能为空',type: 'error'})
return;
}
var axiosObj=this.autoStepToAxios(autoStepObj)
var casedbEnv={};
if(this.xmTestCasedb && this.xmTestCasedb.envJson){
casedbEnv={}
var casedbEnvList=JSON.parse(this.xmTestCasedb.envJson)
casedbEnvList.forEach(k=>{
casedbEnv[k.id]=k.value
})
}
var testPlanEnv={};
if(this.xmTestPlan && this.xmTestPlan.envJson){
testPlanEnv={}
var testPlanEnvList=JSON.parse(this.xmTestPlan.envJson)
testPlanEnvList.forEach(k=>{
testPlanEnv[k.id]=k.value
})
}
Object.assign(casedbEnv,testPlanEnv)
var axiosObj=this.autoStepToAxios(autoStepObj,casedbEnv)
//axiosObj.headers['Access-Control-Allow-Origin']='*'
//axios.defaults.withCredentials = true // cookie
//axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded'
@ -712,7 +747,7 @@ import JsonViewer from 'vue-json-viewer'
this.testRes=res
if(autoStepObj.expectResult){
var func=new Function('res','env',autoStepObj.expectResult)
var result=func(res,{})
var result=func(res,casedbEnv)
if(result==true){
this.$notify({position:'bottom-left',showClose:true,message:'成功',type: 'success'})

2
src/views/xm/core/xmTestCase/XmTestCaseMng.vue

@ -74,7 +74,7 @@
<el-row>
<!--编辑 XmTestCase 测试用例界面-->
<el-dialog title="编辑测试用例" :visible.sync="editFormVisible" fullscreen width="90%" top="20px" append-to-body :close-on-click-modal="false">
<xm-test-case-edit op-type="edit" :xm-test-case="editForm" :visible="editFormVisible" @cancel="editFormVisible=false" @submit="afterEditSubmit" @edit-fields="onEditFields"></xm-test-case-edit>
<xm-test-case-edit op-type="edit" :xm-test-case="editForm" :visible="editFormVisible" :xm-test-casedb="xmTestCasedb" @cancel="editFormVisible=false" @submit="afterEditSubmit" @edit-fields="onEditFields"></xm-test-case-edit>
</el-dialog>
<!--新增 XmTestCase 测试用例界面-->

2
src/views/xm/core/xmTestCasedb/XmTestCasedbEnv.vue

@ -5,7 +5,7 @@
<h4>注意</h4>
测试库的环境变量在整个测试库范围内共享<br/>
测试计划的环境变量在整个测试计划范围内共享<br/>
环境变量可以在自动化测试用例中通过<Strong>${env.变量名}</Strong>进行引用比如变量baseApi,可以通过 ${env.baseApi}进行引用<br/>
环境变量可以在自动化测试用例中通过<Strong>#{变量名}</Strong>进行引用比如变量baseApi,可以通过 #{baseApi}进行引用<br/>
赋值顺序优先查找测试计划中变量如果不存在则从测试库中查找变量<br/>
</span>
</el-row>

2
src/views/xm/core/xmTestPlan/XmTestPlanEnv.vue

@ -4,7 +4,7 @@
<span style="font-size:0.8em;color:#909399;">
<h4>注意</h4>
测试计划的环境变量在整个测试计划范围内共享<br/>
环境变量可以在自动化测试用例中通过<Strong>${env.变量名}</Strong>进行引用比如变量baseApi,可以通过 ${env.baseApi}进行引用<br/>
环境变量可以在自动化测试用例中通过<Strong>#{变量名}</Strong>进行引用比如变量baseApi,可以通过 #{baseApi}进行引用<br/>
赋值顺序优先查找测试计划中变量如果不存在则从测试库中查找变量<br/>
</span>
</el-row>

Loading…
Cancel
Save