Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
kt-keystone
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
Matrix
kt-keystone
Commits
1b902988
提交
1b902988
authored
3月 29, 2022
作者:
mry
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix(base): 修改了报告样式
上级
53a9de3c
隐藏空白字符变更
内嵌
并排
正在显示
4 个修改的文件
包含
171 行增加
和
82 行删除
+171
-82
overview.ftl
kt-base/src/main/resources/templates/overview.ftl
+13
-10
SwaggerController.java
...ava/org/matrix/autotest/controller/SwaggerController.java
+6
-17
left.png
kt-web/src/main/resources/reports/img/left.png
+0
-0
index.html
kt-web/src/main/resources/reports/index.html
+152
-55
没有找到文件。
kt-base/src/main/resources/templates/overview.ftl
浏览文件 @
1b902988
...
@@ -99,7 +99,7 @@
...
@@ -99,7 +99,7 @@
${failCase.description!}
${failCase.description!}
</div>
</div>
</td>
</td>
<td
style=
"color:
red
;width: 84px"
>
<td
style=
"color:
#a90000
;width: 84px"
>
<div
style=
"width: 84px"
>
<div
style=
"width: 84px"
>
${failCase.result?c}
${failCase.result?c}
</div>
</div>
...
@@ -202,9 +202,6 @@
...
@@ -202,9 +202,6 @@
<script
src=
"./res/js/bootstrap.js"
></script>
<script
src=
"./res/js/bootstrap.js"
></script>
<script
src=
"./res/js/echarts.min.js"
></script>
<script
src=
"./res/js/echarts.min.js"
></script>
<script>
<script>
function
handleData
(
data
)
{
return
data
}
$
(
".clickClass"
).
each
((
i
,
v
)
=>
{
$
(
".clickClass"
).
each
((
i
,
v
)
=>
{
v
.
onclick
=
function
()
{
v
.
onclick
=
function
()
{
...
@@ -221,6 +218,12 @@
...
@@ -221,6 +218,12 @@
let
hr
=
document
.
createElement
(
'hr'
)
let
hr
=
document
.
createElement
(
'hr'
)
oDiv
.
appendChild
(
hr
)
oDiv
.
appendChild
(
hr
)
for
(
let
j
in
item
)
{
for
(
let
j
in
item
)
{
let
div1
=
document
.
createElement
(
'div'
)
let
lab1
=
document
.
createElement
(
'label'
)
let
lab2
=
document
.
createElement
(
'label'
)
div1
.
className
=
'form-group'
lab1
.
className
=
'col-sm-4 control-label w20'
lab2
.
className
=
'col-sm-6 control-label txtl'
let
content
=
null
let
content
=
null
if
(
j
==
'isSuccess'
)
{
if
(
j
==
'isSuccess'
)
{
content
=
'是否成功:'
content
=
'是否成功:'
...
@@ -247,12 +250,12 @@
...
@@ -247,12 +250,12 @@
}
else
{
}
else
{
message
=
item
[
j
]
message
=
item
[
j
]
}
}
let
div1
=
document
.
createElement
(
'div'
)
if
(
item
[
j
]
===
true
){
let
lab1
=
document
.
createElement
(
'label'
)
lab2
.
style
=
'color: green'
let
lab2
=
document
.
createElement
(
'label'
)
}
div1
.
className
=
'form-group'
if
(
item
[
j
]
===
false
){
lab1
.
className
=
'col-sm-4 control-label w2
0'
lab2
.
style
=
'color: #a9000
0'
lab2
.
className
=
'col-sm-6 control-label txtl'
}
lab1
.
innerText
=
content
lab1
.
innerText
=
content
lab2
.
innerText
=
message
lab2
.
innerText
=
message
div1
.
appendChild
(
lab1
)
div1
.
appendChild
(
lab1
)
...
...
kt-web/src/main/java/org/matrix/autotest/controller/SwaggerController.java
浏览文件 @
1b902988
...
@@ -26,7 +26,6 @@ import java.util.Map;
...
@@ -26,7 +26,6 @@ import java.util.Map;
import
java.util.Set
;
import
java.util.Set
;
import
java.util.regex.Matcher
;
import
java.util.regex.Matcher
;
import
java.util.regex.Pattern
;
import
java.util.regex.Pattern
;
import
java.util.stream.Collectors
;
/**
/**
* @author mry
* @author mry
...
@@ -194,16 +193,6 @@ public class SwaggerController {
...
@@ -194,16 +193,6 @@ public class SwaggerController {
return
list
;
return
list
;
}
}
// private List<InterfaceInformation> listSearch(List<InterfaceInformation> originalList){
// // nameIndex nameMap -> key name -> value List result1
// // methodIndex methodMap result2
// // tagIndex indexMap
// Map<String, List<InterfaceInformation>> nameMap = originalList.stream().collect(Collectors.groupingBy(InterfaceInformation::getSummary));
// Map<String, List<InterfaceInformation>> urlMap = originalList.stream().collect(Collectors.groupingBy(InterfaceInformation::getMethodUrl));
// Map<String, List<InterfaceInformation>> tagsMap = originalList.stream().collect(Collectors.groupingBy(InterfaceInformation::getTags));
//
// }
/**
/**
* 查询快速添加的接口
* 查询快速添加的接口
* name -> summary
* name -> summary
...
@@ -243,19 +232,19 @@ public class SwaggerController {
...
@@ -243,19 +232,19 @@ public class SwaggerController {
List
<
InterfaceInformation
>
swaggerTagSearch
;
List
<
InterfaceInformation
>
swaggerTagSearch
;
if
(
""
.
equals
(
url
)
&&
""
.
equals
(
tag
)
&&
""
.
equals
(
name
))
{
if
(
""
.
equals
(
url
)
&&
""
.
equals
(
tag
)
&&
""
.
equals
(
name
))
{
swaggerSearch
=
list
;
swaggerSearch
=
list
;
}
else
if
(
!
""
.
equals
(
url
)
&&
""
.
equals
(
tag
)
&&
""
.
equals
(
name
))
{
}
else
if
(
""
.
equals
(
tag
)
&&
""
.
equals
(
name
))
{
swaggerSearch
=
urlSearch
(
url
,
list
);
swaggerSearch
=
urlSearch
(
url
,
list
);
}
else
if
(
""
.
equals
(
url
)
&&
!
""
.
equals
(
tag
)
&&
""
.
equals
(
name
))
{
}
else
if
(
""
.
equals
(
name
)
&&
""
.
equals
(
url
))
{
swaggerSearch
=
tagSearch
(
tag
,
list
);
swaggerSearch
=
tagSearch
(
tag
,
list
);
}
else
if
(
""
.
equals
(
url
)
&&
""
.
equals
(
tag
)
&&
!
""
.
equals
(
name
)
)
{
}
else
if
(
""
.
equals
(
url
)
&&
""
.
equals
(
tag
))
{
swaggerSearch
=
nameSearch
(
name
,
list
);
swaggerSearch
=
nameSearch
(
name
,
list
);
}
else
if
(
!
""
.
equals
(
url
)
&&
!
""
.
equals
(
tag
)
&&
""
.
equals
(
name
))
{
}
else
if
(
""
.
equals
(
name
))
{
swaggerUrlSearch
=
urlSearch
(
url
,
list
);
swaggerUrlSearch
=
urlSearch
(
url
,
list
);
swaggerSearch
=
tagSearch
(
tag
,
swaggerUrlSearch
);
swaggerSearch
=
tagSearch
(
tag
,
swaggerUrlSearch
);
}
else
if
(
!
""
.
equals
(
url
)
&&
""
.
equals
(
tag
)
&&
!
""
.
equals
(
name
))
{
}
else
if
(
""
.
equals
(
tag
))
{
swaggerUrlSearch
=
urlSearch
(
url
,
list
);
swaggerUrlSearch
=
urlSearch
(
url
,
list
);
swaggerSearch
=
nameSearch
(
name
,
swaggerUrlSearch
);
swaggerSearch
=
nameSearch
(
name
,
swaggerUrlSearch
);
}
else
if
(
""
.
equals
(
url
)
&&
!
""
.
equals
(
tag
)
&&
!
""
.
equals
(
name
)
)
{
}
else
if
(
""
.
equals
(
url
))
{
swaggerTagSearch
=
tagSearch
(
tag
,
list
);
swaggerTagSearch
=
tagSearch
(
tag
,
list
);
swaggerSearch
=
nameSearch
(
name
,
swaggerTagSearch
);
swaggerSearch
=
nameSearch
(
name
,
swaggerTagSearch
);
}
else
{
}
else
{
...
...
kt-web/src/main/resources/reports/img/left.png
0 → 100644
浏览文件 @
1b902988
228 Bytes
kt-web/src/main/resources/reports/index.html
浏览文件 @
1b902988
...
@@ -21,40 +21,41 @@
...
@@ -21,40 +21,41 @@
<form
class=
"form"
>
<form
class=
"form"
>
<div
class=
"form-group flex"
>
<div
class=
"form-group flex"
>
<label
for=
"total"
>
总数:
</label>
<label
for=
"total"
>
总数:
</label>
<input
type=
"text"
class=
"form-control"
id=
"total"
readonly=
"readonly"
value=
"total
"
/>
<input
class=
"form-control"
id=
"total"
readonly=
"readonly"
value=
"1
"
/>
</div>
</div>
<div
class=
"form-group flex"
>
<div
class=
"form-group flex"
>
<label
for=
"allTime"
>
总耗时:
</label>
<label
for=
"allTime"
>
总耗时:
</label>
<input
type=
"text"
class=
"form-control"
id=
"allTime"
readonly=
"readonly"
value=
"allTime
"
/>
<input
class=
"form-control"
id=
"allTime"
readonly=
"readonly"
value=
"0天:0 小时:0 分钟:1404 毫秒:
"
/>
</div>
</div>
<div
class=
"form-group flex"
>
<div
class=
"form-group flex"
>
<label
for=
"passNum"
>
通过:
</label>
<label
for=
"passNum"
>
通过
数
:
</label>
<input
type=
"text"
class=
"form-control"
id=
"passNum"
readonly=
"readonly"
value=
"passNum
"
/>
<input
class=
"form-control"
id=
"passNum"
readonly=
"readonly"
value=
"0
"
/>
</div>
</div>
<div
class=
"form-group flex"
>
<div
class=
"form-group flex"
>
<label
for=
"failNum"
>
失败:
</label>
<label
for=
"failNum"
>
失败
数
:
</label>
<input
type=
"text"
class=
"form-control"
id=
"failNum"
readonly=
"readonly"
value=
"failNum
"
/>
<input
class=
"form-control"
id=
"failNum"
readonly=
"readonly"
value=
"1
"
/>
</div>
</div>
<div
class=
"form-group flex"
>
<div
class=
"form-group flex"
>
<label
for=
"probability"
>
通过率:
</label>
<label
for=
"probability"
>
通过率:
</label>
<input
type=
"text"
class=
"form-control"
id=
"probability"
readonly=
"readonly"
value=
"probability"
/>
<input
class=
"form-control"
id=
"probability"
readonly=
"readonly"
value=
"0%"
/>
</div>
</div>
</form>
</form>
</div>
</div>
<div
style=
"display: flex;"
>
<div
style=
"display: flex;"
>
<div
id=
"pieChart"
style=
"width:50%;height: 3
0
0px;"
></div>
<div
id=
"pieChart"
style=
"width:50%;height: 3
5
0px;"
></div>
<div
id=
"histogram"
style=
"width:50%;height: 3
0
0px;"
></div>
<div
id=
"histogram"
style=
"width:50%;height: 3
5
0px;"
></div>
</div>
</div>
<div
class=
"table"
>
<div
class=
"table"
style=
"overflow: auto"
>
<table
class=
"table table-striped"
>
<table
class=
"table table-striped"
>
<thead>
<thead>
<tr>
<tr>
<th>
编号
</th>
<th>
编号
</th>
<th>
用例名称
</th>
<th>
用例名称
</th>
<th>
用例类型
</th>
<th>
用例类型
</th>
<th>
详细参数
</th>
<th>
执行结果
</th>
<th>
用例描述
</th>
<th>
用例描述
</th>
<th>
执行结果
</th>
<th>
执行结果
</th>
<th>
执行时间
</th>
<th>
执行时间
</th>
...
@@ -63,19 +64,70 @@
...
@@ -63,19 +64,70 @@
</thead>
</thead>
<tbody>
<tbody>
<tr>
<tr>
<th
scope=
"row"
>
1
</th>
<th
style=
"width: 60px"
scope=
"row"
>
<td>
名称
</td>
<div
style=
"width: 60px"
>
<td>
类型
</td>
1
<td>
参数
</td>
</div>
<td>
描述
</td>
</th>
<td>
true/false
</td>
<td
style=
"width: 184px"
>
<td>
时间
</td>
<div
style=
"width: 184px;"
>
获取当前登录用户
</div>
<td
class=
"clickClass"
</td>
data-message=
'CheckPointResult(checkPointResultDetails=[CheckPointResultDetail(isSuccess=true, type=EXCEPTION_CHECK, matchExpression=string, parseExpression=string, message=string)])'
>
<td
style=
"width: 108px"
>
查看结果
<div
style=
"width: 108px"
>
HTTP
</div>
</td>
<td
style=
"width: 500px"
>
<div
style=
"width: 500px;cursor: pointer;display: flex;justify-content: flex-start;align-items: flex-start"
class=
"openJson"
>
<img
style=
"width: 16px; margin-top: 4px;margin-right: 8px;transition:.5s all ease;user-select: none"
src=
"./img/left.png"
/>
<span
style=
"overflow: hidden; white-space: nowrap; text-overflow: ellipsis;font-size: 16px"
>
{
{
"password" : "cae0bf219196f11c9eaff96ebb72b01a",
"projects" : [ {
"name" : "禅道和gitlab和jenkins联动测试",
"id" : 17
}, {
"name" : "智能会议室管理系统",
"id" : 20
}, {
"name" : "工作流引擎",
"id" : 27
} ],
"name" : "黄夏豪",
"id" : 22,
"account" : "hxh"
}
</span>
</div>
</td>
<td>
<div
style=
"width: 160px"
>
用于测试订阅服务
</div>
</td>
<td
style=
"color: #a90000;width: 84px"
>
<div
style=
"width: 84px"
>
false
</div>
</td>
<td
style=
"width: 84px"
>
<div
style=
"width: 84px"
>
422ms
</div>
</td>
<td
style=
"width: 84px"
class=
"clickClass"
data-message=
'{"checkPointResultDetails":[{"isSuccess":true,"type":"CONTAIN_CHECK","matchExpression":"登录成功","parseExpression":"登录成功","message":"包含检查点,检查未通过,不包含目标值"},{"isSuccess":false,"type":"NO_CONTAIN_CHECK","matchExpression":"测试","parseExpression":"测试","message":"不包含检查点,检查未通过"},{"isSuccess":false,"type":"JSONPATH_CHECK","matchExpression":"if ({$.password}.length >20 && equal({$.name},\"苗润雨\")){ true }","parseExpression":"if (\"cae0bf219196f11c9eaff96ebb72b01a\".length >20 && equal(\"黄夏豪\",\"苗润雨\")){ true }","message":"JsonPath检查点,检查未通过,JsonPath的返回值不是一个布尔类型"}],"failNum":3,"successNum":0}'
>
<div
style=
"width: 84px"
>
查看结果
</div>
</td>
</td>
</tr>
</tr>
</tbody>
</tbody>
<tbody>
</tbody>
</table>
</table>
</div>
</div>
</div>
</div>
...
@@ -89,7 +141,6 @@
...
@@ -89,7 +141,6 @@
</div>
</div>
<div
class=
"modal-body"
>
<div
class=
"modal-body"
>
<form
class=
"form-horizontal"
id=
"grp"
>
<form
class=
"form-horizontal"
id=
"grp"
>
</form>
</form>
</div>
</div>
<div
class=
"modal-footer"
>
<div
class=
"modal-footer"
>
...
@@ -102,41 +153,89 @@
...
@@ -102,41 +153,89 @@
<script
src=
"./js/bootstrap.js"
></script>
<script
src=
"./js/bootstrap.js"
></script>
<script
src=
"./js/echarts.min.js"
></script>
<script
src=
"./js/echarts.min.js"
></script>
<script>
<script>
function
handleData
(
data
)
{
let
a
=
data
let
b
=
a
.
split
(
'='
).
splice
(
1
,
a
.
split
(
'='
).
length
-
2
)
let
c
=
b
.
join
(
'='
).
split
(
'('
)[
1
].
split
(
')'
)[
0
]
let
d
=
c
.
split
(
','
)
let
e
=
[]
d
.
map
(
v
=>
{
e
.
push
({
key
:
v
.
split
(
'='
)[
0
]
+
":"
,
value
:
v
.
split
(
'='
)[
1
]})
})
return
e
}
$
(
".clickClass"
).
each
((
i
,
v
)
=>
{
$
(
".clickClass"
).
each
((
i
,
v
)
=>
{
v
.
onclick
=
function
()
{
v
.
onclick
=
function
()
{
let
data
=
handleData
(
v
.
getAttribute
(
'data-message'
))
if
(
!
v
.
getAttribute
(
'data-message'
))
{
alert
(
'该条测试数据执行失败'
)
return
}
let
data
=
JSON
.
parse
(
v
.
getAttribute
(
'data-message'
)).
checkPointResultDetails
$
(
'#myModal'
).
modal
()
$
(
'#myModal'
).
modal
()
if
(
data
)
{
if
(
data
)
{
let
oDiv
=
document
.
getElementById
(
'grp'
)
let
oDiv
=
document
.
getElementById
(
'grp'
)
$
(
"#grp"
).
empty
();
$
(
"#grp"
).
empty
();
data
.
map
(
v
=>
{
for
(
let
item
of
data
)
{
let
div1
=
document
.
createElement
(
'div'
)
let
hr
=
document
.
createElement
(
'hr'
)
let
lab1
=
document
.
createElement
(
'label'
)
oDiv
.
appendChild
(
hr
)
let
lab2
=
document
.
createElement
(
'label'
)
for
(
let
j
in
item
)
{
div1
.
className
=
'form-group'
let
div1
=
document
.
createElement
(
'div'
)
lab1
.
className
=
'col-sm-4 control-label w20'
let
lab1
=
document
.
createElement
(
'label'
)
lab2
.
className
=
'col-sm-6 control-label txtl'
let
lab2
=
document
.
createElement
(
'label'
)
lab1
.
innerText
=
v
.
key
div1
.
className
=
'form-group'
lab2
.
innerText
=
v
.
value
lab1
.
className
=
'col-sm-4 control-label w20'
div1
.
appendChild
(
lab1
)
lab2
.
className
=
'col-sm-6 control-label txtl'
div1
.
appendChild
(
lab2
)
let
content
=
null
oDiv
.
appendChild
(
div1
)
if
(
j
==
'isSuccess'
)
{
})
content
=
'是否成功:'
}
else
if
(
j
==
'type'
)
{
content
=
'类型:'
}
else
if
(
j
==
'matchExpression'
)
{
content
=
'匹配前表达式:'
}
else
if
(
j
==
'parseExpression'
)
{
content
=
'匹配后表达式:'
}
else
if
(
j
==
'message'
)
{
content
=
'信息:'
}
let
message
=
null
if
(
item
[
j
]
==
'EXCEPTION_CHECK'
)
{
message
=
'异常检查点'
}
else
if
(
item
[
j
]
==
'NULL_CHECK'
)
{
message
=
'空值检查点'
}
else
if
(
item
[
j
]
==
'CONTAIN_CHECK'
)
{
message
=
'包含检查点'
}
else
if
(
item
[
j
]
==
'NO_CONTAIN_CHECK'
)
{
message
=
'不包含检查点'
}
else
if
(
item
[
j
]
==
'JSONPATH_CHECK'
)
{
message
=
'Jsonpath检查点'
}
else
{
message
=
item
[
j
]
}
if
(
item
[
j
]
===
true
){
lab2
.
style
=
'color: green'
}
if
(
item
[
j
]
===
false
){
lab2
.
style
=
'color: #a90000'
}
lab1
.
innerText
=
content
lab2
.
innerText
=
message
div1
.
appendChild
(
lab1
)
div1
.
appendChild
(
lab2
)
oDiv
.
appendChild
(
div1
)
}
}
}
}
}
}
})
})
$
(
'.openJson'
).
each
((
i
,
v
)
=>
{
v
.
onclick
=
function
()
{
console
.
log
(
v
.
childNodes
)
if
(
v
.
childNodes
[
1
].
style
.
transform
==
'rotate(90deg)'
)
{
v
.
childNodes
[
1
].
style
.
transform
=
'rotate(0deg)'
}
else
{
v
.
childNodes
[
1
].
style
.
transform
=
'rotate(90deg)'
}
if
(
v
.
childNodes
[
3
].
style
.
whiteSpace
==
'pre'
)
{
v
.
childNodes
[
3
].
style
.
whiteSpace
=
'nowrap'
v
.
childNodes
[
3
].
style
.
overflow
=
'hidden'
v
.
childNodes
[
3
].
style
.
textOverflow
=
'ellipsis'
}
else
{
v
.
childNodes
[
3
].
style
.
whiteSpace
=
'pre'
}
}
})
</script>
</script>
<script>
<script>
let
chartDom
=
document
.
getElementById
(
'pieChart'
);
let
chartDom
=
document
.
getElementById
(
'pieChart'
);
...
@@ -146,8 +245,8 @@
...
@@ -146,8 +245,8 @@
pieChart
=
{
pieChart
=
{
title
:
{
title
:
{
text
:
'测试通过率'
,
text
:
'测试通过率'
,
subtext
:
'
5
0%'
,
subtext
:
'0%'
,
left
:
'center'
,
left
:
'center'
},
},
tooltip
:
{
tooltip
:
{
trigger
:
'item'
trigger
:
'item'
...
@@ -158,7 +257,7 @@
...
@@ -158,7 +257,7 @@
},
},
series
:
[
series
:
[
{
{
name
:
'是否
成功
'
,
name
:
'是否
通过
'
,
type
:
'pie'
,
type
:
'pie'
,
radius
:
[
'25%'
,
'50%'
],
radius
:
[
'25%'
,
'50%'
],
avoidLabelOverlap
:
false
,
avoidLabelOverlap
:
false
,
...
@@ -186,7 +285,7 @@
...
@@ -186,7 +285,7 @@
data
:
[
data
:
[
{
{
value
:
1
,
name
:
'pass'
,
itemStyle
:
{
value
:
0
,
name
:
'pass'
,
itemStyle
:
{
color
:
'green'
color
:
'green'
}
}
},
},
...
@@ -215,7 +314,7 @@
...
@@ -215,7 +314,7 @@
series
:
[
series
:
[
{
{
data
:
[{
data
:
[{
value
:
1
,
value
:
0
,
itemStyle
:
{
itemStyle
:
{
color
:
'green'
color
:
'green'
}
}
...
@@ -226,8 +325,8 @@
...
@@ -226,8 +325,8 @@
}
}
}],
}],
type
:
'bar'
,
type
:
'bar'
,
barWidth
:
50
,
showBackground
:
true
,
showBackground
:
true
,
barWidth
:
50
,
backgroundStyle
:
{
backgroundStyle
:
{
color
:
'rgba(180, 180, 180, 0.2)'
color
:
'rgba(180, 180, 180, 0.2)'
}
}
...
@@ -244,5 +343,4 @@
...
@@ -244,5 +343,4 @@
</script>
</script>
</body>
</body>
</html>
</html>
\ No newline at end of file
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论