Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
MeterSphere
metersphere
提交
8dc32493
M
metersphere
项目概览
MeterSphere
/
metersphere
上一次同步 大约 3 年
通知
25
Star
1
Fork
1
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
M
metersphere
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
8dc32493
编写于
4月 21, 2020
作者:
Q
q4speed
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
修复空数据
上级
3b0e2c11
变更
8
隐藏空白更改
内联
并排
Showing
8 changed file
with
70 addition
and
59 deletion
+70
-59
frontend/src/business/components/api/test/ApiTestConfig.vue
frontend/src/business/components/api/test/ApiTestConfig.vue
+18
-7
frontend/src/business/components/api/test/components/ApiAssertionRegex.vue
...ness/components/api/test/components/ApiAssertionRegex.vue
+3
-3
frontend/src/business/components/api/test/components/ApiAssertionText.vue
...iness/components/api/test/components/ApiAssertionText.vue
+8
-8
frontend/src/business/components/api/test/components/ApiKeyValue.vue
...c/business/components/api/test/components/ApiKeyValue.vue
+26
-25
frontend/src/business/components/api/test/components/ApiRequestConfig.vue
...iness/components/api/test/components/ApiRequestConfig.vue
+1
-1
frontend/src/business/components/api/test/components/ApiRequestForm.vue
...usiness/components/api/test/components/ApiRequestForm.vue
+10
-10
frontend/src/business/components/api/test/components/ApiScenarioConfig.vue
...ness/components/api/test/components/ApiScenarioConfig.vue
+3
-4
frontend/src/business/components/api/test/components/ApiScenarioForm.vue
...siness/components/api/test/components/ApiScenarioForm.vue
+1
-1
未找到文件。
frontend/src/business/components/api/test/ApiTestConfig.vue
浏览文件 @
8dc32493
...
...
@@ -8,13 +8,13 @@
<el-input
class=
"test-name"
v-model=
"test.name"
maxlength=
"64"
:placeholder=
"$t('api_test.input_name')"
>
<el-select
class=
"test-project"
v-model=
"test.projectId"
slot=
"prepend"
:placeholder=
"$t('api_test.select_project')"
>
<el-option
v-for=
"
item in projects"
:key=
"item.id"
:label=
"item.name"
:value=
"item
.id"
/>
<el-option
v-for=
"
project in projects"
:key=
"project.id"
:label=
"project.name"
:value=
"project
.id"
/>
</el-select>
</el-input>
<el-button
type=
"primary"
plain
:disabled=
"isDisabled"
@
click=
"saveTest"
>
保存
</el-button>
</el-row>
</el-header>
<ms-api-scenario-config
:scenarios=
"test.scenario
_d
efinition"
/>
<ms-api-scenario-config
:scenarios=
"test.scenario
D
efinition"
/>
</el-container>
</el-card>
</div>
...
...
@@ -35,9 +35,10 @@
projects
:
[],
change
:
false
,
test
:
{
id
:
null
,
projectId
:
null
,
name
:
null
,
scenario
_d
efinition
:
[]
scenario
D
efinition
:
[]
}
}
},
...
...
@@ -53,11 +54,21 @@
methods
:
{
saveTest
:
function
()
{
this
.
change
=
false
;
this
.
$message
({
message
:
this
.
$t
(
'
commons.save_success
'
),
type
:
'
success
'
let
param
=
{
id
:
this
.
test
.
id
,
projectId
:
this
.
test
.
projectId
,
name
:
this
.
test
.
name
,
scenarioDefinition
:
JSON
.
stringify
(
this
.
test
.
scenarioDefinition
)
}
this
.
result
=
this
.
$post
(
"
/api/save
"
,
param
,
response
=>
{
this
.
test
.
id
=
response
.
data
;
this
.
$message
({
message
:
this
.
$t
(
'
commons.save_success
'
),
type
:
'
success
'
});
});
}
},
...
...
frontend/src/business/components/api/test/components/ApiAssertionRegex.vue
浏览文件 @
8dc32493
...
...
@@ -4,9 +4,9 @@
<el-col
class=
"assertion-select"
>
<el-select
class=
"assertion-item"
v-model=
"regex.subject"
size=
"small"
:placeholder=
"$t('api_test.request.assertions.select_subject')"
>
<el-option
label=
"Http
-Code"
value=
"HTTP-CODE"
></el-option
>
<el-option
label=
"Header"
value=
"HEADER"
></el-option
>
<el-option
label=
"Body"
value=
"BODY"
></el-option
>
<el-option
label=
"Http
Code"
value=
"HTTP_CODE"
/
>
<el-option
label=
"Header"
value=
"HEADER"
/
>
<el-option
label=
"Body"
value=
"BODY"
/
>
</el-select>
</el-col>
<el-col>
...
...
frontend/src/business/components/api/test/components/ApiAssertionText.vue
浏览文件 @
8dc32493
...
...
@@ -4,19 +4,19 @@
<el-col
class=
"assertion-select"
>
<el-select
class=
"assertion-item"
v-model=
"subject"
size=
"small"
:placeholder=
"$t('api_test.request.assertions.select_subject')"
>
<el-option
label=
"Http
-Code"
value=
"HTTP-CODE"
></el-option
>
<el-option
label=
"Header"
value=
"HEADER"
></el-option
>
<el-option
label=
"Body"
value=
"BODY"
></el-option
>
<el-option
label=
"Http
Code"
value=
"HTTP_CODE"
/
>
<el-option
label=
"Header"
value=
"HEADER"
/
>
<el-option
label=
"Body"
value=
"BODY"
/
>
</el-select>
</el-col>
<el-col
class=
"assertion-select"
>
<el-select
class=
"assertion-item"
v-model=
"condition"
size=
"small"
:placeholder=
"$t('api_test.request.assertions.select_contains')"
>
<el-option
:label=
"$t('api_test.request.assertions.contains')"
value=
"CONTAINS"
></el-option
>
<el-option
:label=
"$t('api_test.request.assertions.not_contains')"
value=
"NOT_CONTAINS"
></el-option
>
<el-option
:label=
"$t('api_test.request.assertions.equals')"
value=
"EQUALS"
></el-option
>
<el-option
:label=
"$t('api_test.request.assertions.start_with')"
value=
"START_WITH"
></el-option
>
<el-option
:label=
"$t('api_test.request.assertions.end_with')"
value=
"END_WITH"
></el-option
>
<el-option
:label=
"$t('api_test.request.assertions.contains')"
value=
"CONTAINS"
/
>
<el-option
:label=
"$t('api_test.request.assertions.not_contains')"
value=
"NOT_CONTAINS"
/
>
<el-option
:label=
"$t('api_test.request.assertions.equals')"
value=
"EQUALS"
/
>
<el-option
:label=
"$t('api_test.request.assertions.start_with')"
value=
"START_WITH"
/
>
<el-option
:label=
"$t('api_test.request.assertions.end_with')"
value=
"END_WITH"
/
>
</el-select>
</el-col>
<el-col>
...
...
frontend/src/business/components/api/test/components/ApiKeyValue.vue
浏览文件 @
8dc32493
...
...
@@ -12,8 +12,21 @@
<el-input
v-model=
"item.value"
placeholder=
"Value"
size=
"small"
maxlength=
"100"
@
change=
"check"
/>
</el-col>
<el-col
class=
"kv-delete"
>
<el-button
size=
"mini"
class=
"el-icon-delete-solid"
circle
@
click=
"remove(index)"
:disabled=
"isDisable(index)"
/>
<el-button
size=
"mini"
class=
"el-icon-delete-solid"
circle
@
click=
"remove(index)"
/>
</el-col>
</el-row>
</div>
<div
class=
"kv-row"
>
<el-row
type=
"flex"
:gutter=
"20"
justify=
"space-between"
align=
"middle"
>
<el-col>
<el-input
v-model=
"kv.key"
placeholder=
"Key"
size=
"small"
maxlength=
"100"
@
change=
"add"
/>
</el-col>
<el-col>
<el-input
v-model=
"kv.value"
placeholder=
"Value"
size=
"small"
maxlength=
"100"
@
change=
"add"
/>
</el-col>
<el-col
class=
"kv-delete"
>
<el-button
size=
"mini"
class=
"el-icon-delete-solid"
circle
:disabled=
"true"
/>
</el-col>
</el-row>
</div>
...
...
@@ -31,45 +44,33 @@
items
:
Array
},
data
()
{
return
{
kv
:
new
KeyValue
()
}
},
methods
:
{
add
:
function
()
{
this
.
items
.
push
(
new
KeyValue
());
if
(
this
.
kv
.
key
||
this
.
kv
.
value
)
{
this
.
items
.
push
(
this
.
kv
);
this
.
kv
=
new
KeyValue
();
}
},
remove
:
function
(
index
)
{
this
.
items
.
splice
(
index
,
1
);
if
(
this
.
items
.
length
===
0
)
{
this
.
add
();
}
},
check
:
function
()
{
let
isNeedCreate
=
true
;
let
removeIndex
=
-
1
;
this
.
items
.
forEach
((
item
,
index
)
=>
{
if
(
!
item
.
key
&&
!
item
.
value
)
{
// 多余的空行
if
(
index
!==
this
.
items
.
length
-
1
)
{
removeIndex
=
index
;
}
// 没有空行,需要创建空行
isNeedCreate
=
false
;
removeIndex
=
index
;
}
});
if
(
isNeedCreate
)
{
this
.
add
();
}
if
(
removeIndex
!==
-
1
)
{
this
.
remove
(
removeIndex
);
}
// TODO 检查key重复
},
isDisable
:
function
(
index
)
{
return
this
.
items
.
length
-
1
===
index
;
}
},
created
()
{
if
(
this
.
items
.
length
===
0
)
{
this
.
add
();
}
}
}
...
...
frontend/src/business/components/api/test/components/ApiRequestConfig.vue
浏览文件 @
8dc32493
...
...
@@ -11,7 +11,7 @@
</div>
<div
class=
"request-btn"
>
<el-dropdown
trigger=
"click"
@
command=
"handleCommand"
>
<span
class=
"el-dropdown-link el-icon-more"
></span
>
<span
class=
"el-dropdown-link el-icon-more"
/
>
<el-dropdown-menu
slot=
"dropdown"
>
<el-dropdown-item
:command=
"
{type: 'copy', index: index}">复制请求
</el-dropdown-item>
<el-dropdown-item
:command=
"
{type: 'delete', index: index}">删除请求
</el-dropdown-item>
...
...
frontend/src/business/components/api/test/components/ApiRequestForm.vue
浏览文件 @
8dc32493
<
template
>
<el-form
:model=
"request"
:rules=
"rules"
ref=
"request"
label-width=
"100px"
>
<el-form-item
:label=
"$t('api_test.request.name')"
prop=
"name"
>
<el-input
v-model=
"request.name"
maxlength=
"100"
></el-input
>
<el-input
v-model=
"request.name"
maxlength=
"100"
/
>
</el-form-item>
<el-form-item
:label=
"$t('api_test.request.url')"
prop=
"url"
>
<el-input
v-model=
"request.url"
maxlength=
"100"
:placeholder=
"$t('api_test.request.url_description')"
>
<el-select
v-model=
"request.method"
slot=
"prepend"
class=
"request-method-select"
>
<el-option
label=
"GET"
value=
"GET"
></el-option
>
<el-option
label=
"POST"
value=
"POST"
></el-option
>
<el-option
label=
"PUT"
value=
"PUT"
></el-option
>
<el-option
label=
"PATCH"
value=
"PATCH"
></el-option
>
<el-option
label=
"DELETE"
value=
"DELETE"
></el-option
>
<el-option
label=
"OPTIONS"
value=
"OPTIONS"
></el-option
>
<el-option
label=
"HEAD"
value=
"HEAD"
></el-option
>
<el-option
label=
"CONNECT"
value=
"CONNECT"
></el-option
>
<el-option
label=
"GET"
value=
"GET"
/
>
<el-option
label=
"POST"
value=
"POST"
/
>
<el-option
label=
"PUT"
value=
"PUT"
/
>
<el-option
label=
"PATCH"
value=
"PATCH"
/
>
<el-option
label=
"DELETE"
value=
"DELETE"
/
>
<el-option
label=
"OPTIONS"
value=
"OPTIONS"
/
>
<el-option
label=
"HEAD"
value=
"HEAD"
/
>
<el-option
label=
"CONNECT"
value=
"CONNECT"
/
>
</el-select>
</el-input>
</el-form-item>
...
...
@@ -30,7 +30,7 @@
<ms-api-body
:body=
"request.body"
/>
</el-tab-pane>
<el-tab-pane
:label=
"$t('api_test.request.assertions.label')"
name=
"assertions"
>
<ms-api-assertions
:assertions=
"request.assertions"
></ms-api-assertions
>
<ms-api-assertions
:assertions=
"request.assertions"
/
>
</el-tab-pane>
<el-tab-pane
:label=
"$t('api_test.request.extract')"
name=
"extract"
v-if=
"false"
>
TODO
...
...
frontend/src/business/components/api/test/components/ApiScenarioConfig.vue
浏览文件 @
8dc32493
...
...
@@ -18,14 +18,13 @@
</ms-api-collapse-item>
</ms-api-collapse>
</div>
<el-button
class=
"scenario-create"
type=
"primary"
size=
"mini"
icon=
"el-icon-plus"
plain
@
click=
"createScenario"
/>
<el-button
class=
"scenario-create"
type=
"primary"
size=
"mini"
icon=
"el-icon-plus"
plain
@
click=
"createScenario"
/>
</el-aside>
<el-main
class=
"scenario-main"
>
<div
class=
"scenario-form"
>
<ms-api-scenario-form
:scenario=
"selected"
v-if=
"isScenario"
></ms-api-scenario-form
>
<ms-api-request-form
:request=
"selected"
v-if=
"isRequest"
></ms-api-request-form
>
<ms-api-scenario-form
:scenario=
"selected"
v-if=
"isScenario"
/
>
<ms-api-request-form
:request=
"selected"
v-if=
"isRequest"
/
>
</div>
</el-main>
</el-container>
...
...
frontend/src/business/components/api/test/components/ApiScenarioForm.vue
浏览文件 @
8dc32493
<
template
>
<el-form
:model=
"scenario"
:rules=
"rules"
ref=
"scenario"
label-width=
"100px"
>
<el-form-item
:label=
"$t('api_test.scenario.name')"
prop=
"name"
>
<el-input
v-model=
"scenario.name"
maxlength=
"100"
></el-input
>
<el-input
v-model=
"scenario.name"
maxlength=
"100"
/
>
</el-form-item>
<el-form-item
:label=
"$t('api_test.scenario.base_url')"
prop=
"url"
>
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录