Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
H
holmes
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
QA
holmes
Commits
fe5924ee
Commit
fe5924ee
authored
Jun 15, 2021
by
黎博
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
场景用例前置条件处理优化以及场景新增全局参数
parent
3d97b5f9
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
51 additions
and
10 deletions
+51
-10
Scene.java
src/main/java/cn/qg/holmes/entity/auto/Scene.java
+1
-0
AutoUtilsService.java
...main/java/cn/qg/holmes/service/auto/AutoUtilsService.java
+1
-1
AutoUtilsServiceImpl.java
.../cn/qg/holmes/service/auto/impl/AutoUtilsServiceImpl.java
+21
-3
SceneTestcaseServiceImpl.java
...qg/holmes/service/auto/impl/SceneTestcaseServiceImpl.java
+10
-2
DingdingUtils.java
src/main/java/cn/qg/holmes/utils/DingdingUtils.java
+18
-4
No files found.
src/main/java/cn/qg/holmes/entity/auto/Scene.java
View file @
fe5924ee
...
...
@@ -20,6 +20,7 @@ public class Scene {
private
Integer
id
;
private
String
name
;
private
Integer
projectId
;
private
String
globalParameters
;
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
)
private
Date
createTime
;
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
)
...
...
src/main/java/cn/qg/holmes/service/auto/AutoUtilsService.java
View file @
fe5924ee
...
...
@@ -16,5 +16,5 @@ public interface AutoUtilsService {
boolean
assertResponse
(
String
response
,
List
<
Map
>
validateList
);
Map
<
String
,
Object
>
handlePreCondition
(
String
namespace
,
String
preString
);
Map
<
String
,
Object
>
handlePreCondition
(
String
namespace
,
String
preString
,
Map
<
String
,
Object
>
globalMap
);
}
src/main/java/cn/qg/holmes/service/auto/impl/AutoUtilsServiceImpl.java
View file @
fe5924ee
...
...
@@ -154,15 +154,32 @@ public class AutoUtilsServiceImpl implements AutoUtilsService {
* @return
*/
@Override
public
Map
<
String
,
Object
>
handlePreCondition
(
String
namespace
,
String
preString
)
{
public
Map
<
String
,
Object
>
handlePreCondition
(
String
namespace
,
String
preString
,
Map
<
String
,
Object
>
globalMap
)
{
log
.
info
(
"开始处理前置动作!"
);
Map
<
String
,
Object
>
resultMap
=
new
HashMap
<>();
try
{
List
<
Map
>
preList
=
JSON
.
parseArray
(
preString
,
Map
.
class
);
for
(
Map
<
String
,
Object
>
map:
preList
)
{
String
db
=
map
.
get
(
"db"
).
toString
();
String
sql
=
map
.
get
(
"sql"
).
toString
();
String
key
=
map
.
get
(
"key"
).
toString
();
String
type
=
map
.
get
(
"type"
).
toString
();
String
key
=
null
;
String
type
=
null
;
if
(
map
.
get
(
"key"
)
!=
null
)
{
key
=
map
.
get
(
"key"
).
toString
();
}
if
(
map
.
get
(
"type"
)
!=
null
)
{
type
=
map
.
get
(
"type"
).
toString
();
}
// 确认SQL中是否需要变量替换
String
regex
=
"(\\{\\{[A-Za-z0-9]+}})"
;
Pattern
pattern
=
Pattern
.
compile
(
regex
);
Matcher
matcher
=
pattern
.
matcher
(
sql
);
while
(
matcher
.
find
())
{
String
replace
=
matcher
.
group
();
// 去掉首位的{{和}}
String
tempKey
=
replace
.
substring
(
2
,
replace
.
length
()
-
2
);
sql
=
sql
.
replace
(
replace
,
"'"
+
globalMap
.
get
(
tempKey
).
toString
()
+
"'"
);
}
Map
<
String
,
String
>
params
=
new
HashMap
<>();
params
.
put
(
"namespace"
,
namespace
);
params
.
put
(
"database"
,
db
);
...
...
@@ -179,6 +196,7 @@ public class AutoUtilsServiceImpl implements AutoUtilsService {
}
}
}
log
.
info
(
"前置动作获取到的值:{}"
,
resultMap
);
return
resultMap
;
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
...
...
src/main/java/cn/qg/holmes/service/auto/impl/SceneTestcaseServiceImpl.java
View file @
fe5924ee
...
...
@@ -61,12 +61,16 @@ public class SceneTestcaseServiceImpl extends ServiceImpl<SceneTestcaseMapper, S
queryWrapper
.
orderByAsc
(
"sequence"
);
List
<
SceneTestcase
>
sceneTestcaseList
=
sceneTestcaseMapper
.
selectList
(
queryWrapper
);
List
<
Map
<
String
,
Object
>>
resultList
=
new
ArrayList
<>();
String
globalParameters
=
sceneService
.
getById
(
sceneId
).
getGlobalParameters
();
// 全局变量Map
Map
<
String
,
Object
>
globalMap
=
new
HashMap
<>();
if
(
globalParameters
!=
null
)
{
globalMap
.
putAll
(
JSON
.
parseObject
(
globalParameters
,
Map
.
class
));
}
for
(
SceneTestcase
sceneTestcase:
sceneTestcaseList
)
{
String
preAction
=
sceneTestcase
.
getPreAction
();
if
(
preAction
!=
null
&&
!
preAction
.
isEmpty
())
{
Map
<
String
,
Object
>
preMap
=
autoUtilsService
.
handlePreCondition
(
namespace
,
preAction
);
Map
<
String
,
Object
>
preMap
=
autoUtilsService
.
handlePreCondition
(
namespace
,
preAction
,
globalMap
);
if
(
preMap
!=
null
)
{
globalMap
.
putAll
(
preMap
);
}
...
...
@@ -163,8 +167,12 @@ public class SceneTestcaseServiceImpl extends ServiceImpl<SceneTestcaseMapper, S
reportMap
.
put
(
"headers"
,
headersMap
);
reportMap
.
put
(
"parameters"
,
parameterMap
);
reportMap
.
put
(
"assertResult"
,
assertResult
);
reportMap
.
put
(
"response"
,
JSON
.
parseObject
(
response
,
Map
.
class
));
reportMap
.
put
(
"elapsedTime"
,
elapsedTime
);
try
{
reportMap
.
put
(
"response"
,
JSON
.
parseObject
(
response
,
Map
.
class
));
}
catch
(
Exception
e
)
{
reportMap
.
put
(
"response"
,
response
);
}
// 插入测试报告
SceneTestcaseReport
sceneTestcaseReport
=
new
SceneTestcaseReport
();
...
...
src/main/java/cn/qg/holmes/utils/DingdingUtils.java
View file @
fe5924ee
...
...
@@ -8,6 +8,8 @@ import org.joda.time.DateTime;
import
java.text.DateFormat
;
import
java.text.SimpleDateFormat
;
import
java.util.*
;
import
java.util.regex.Matcher
;
import
java.util.regex.Pattern
;
/**
* 钉钉发送消息类
...
...
@@ -224,9 +226,21 @@ public class DingdingUtils {
// String markdown = buildMarkdownMsg("YXM-1499", "【羊小咩v7.6.00】【VCC首次交易率提升专题】巴拉巴拉", "黎博", "于巧玲", "p1", "kddsp");
// String markdown = buildPipelineMarkdownMsg("holmes", "master", "bo.li", "测试", "2021-06-03 14:59:45", "fe");
// sendToDingding(markdown, "https://oapi.dingtalk.com/robot/send?access_token=835663338d638e40daaf3ab358af741ef0680a826a962c91bedc53b149d85ee1");
String
str
=
"2021-06-03T09:23:00Z"
;
SimpleDateFormat
simpleDateFormat
=
new
SimpleDateFormat
(
"yyyy-MM-dd HH:mm:ss"
);
String
commitDate
=
simpleDateFormat
.
format
(
DateTime
.
parse
(
str
).
toDate
());
System
.
out
.
println
(
commitDate
);
// String str = "2021-06-03T09:23:00Z";
// SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
// String commitDate = simpleDateFormat.format(DateTime.parse(str).toDate());
// System.out.println(commitDate);
String
model
=
"(\\{\\{[A-Za-z0-9]+}})"
;
String
sql
=
"select * from vcc_talos.risk_record where uuid={{uuid}} and userId={{userId}}"
;
Pattern
pattern
=
Pattern
.
compile
(
model
);
Matcher
matcher
=
pattern
.
matcher
(
sql
);
while
(
matcher
.
find
())
{
String
replace
=
matcher
.
group
();
// 去掉首位的{{和}}
String
tempKey
=
replace
.
substring
(
2
,
replace
.
length
()
-
2
);
sql
=
sql
.
replace
(
replace
,
"'"
+
"1234"
+
"'"
);
}
System
.
out
.
println
(
sql
);
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment