Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
A
auto-test
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
黄承天
auto-test
Commits
fd900b68
提交
fd900b68
authored
3月 27, 2020
作者:
孙洁清
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
路由规则
上级
c6c7234c
隐藏空白字符变更
内嵌
并排
正在显示
3 个修改的文件
包含
231 行增加
和
107 行删除
+231
-107
TestTask.java
src/main/java/com/zjty/autotest/mq/TestTask.java
+177
-105
PageContentTest.java
...main/java/com/zjty/autotest/pojo/sjq/PageContentTest.java
+19
-0
AsyncServiceImpl.java
...java/com/zjty/autotest/service/impl/AsyncServiceImpl.java
+35
-2
没有找到文件。
src/main/java/com/zjty/autotest/mq/TestTask.java
浏览文件 @
fd900b68
...
...
@@ -2,9 +2,15 @@ package com.zjty.autotest.mq;
import
com.alibaba.fastjson.JSON
;
import
com.zjty.autotest.dao.AutoResultSetDao
;
import
com.zjty.autotest.pojo.report.ElementDetail
;
import
com.zjty.autotest.pojo.report.Measure
;
import
com.zjty.autotest.pojo.report.Report
;
import
com.zjty.autotest.pojo.sjq.*
;
import
com.zjty.autotest.pojo.test.Input
;
import
com.zjty.autotest.pojo.test.Project
;
import
com.zjty.autotest.service.AutoResultSetService
;
import
com.zjty.autotest.service.TestReportService
;
import
com.zjty.autotest.service.impl.SeleniumExecutor
;
import
com.zjty.autotest.util.FileHtmlUtil
;
import
com.zjty.autotest.util.IdWorker
;
import
com.zjty.autotest.util.UnZipRarUtil
;
...
...
@@ -28,15 +34,18 @@ public class TestTask {
private
AutoResultSetService
autoResultSetService
;
@Autowired
private
TestReportService
testReportService
;
@Scheduled
(
cron
=
"0/1 * * * * ?"
)
@Autowired
private
SeleniumExecutor
seleniumExecutor
;
private
static
Object
o
=
new
Object
();
@Scheduled
(
cron
=
"0/5 * * * * ?"
)
@Async
(
"asyncServiceExecutor"
)
public
void
getMessage
()
{
String
take
=
QueueManager
.
take
();
log
.
info
(
"获取到消息:{}"
,
take
);
if
(!
StringUtils
.
isEmpty
(
take
))
{
doBusiness
(
take
);
synchronized
(
o
)
{
String
take
=
QueueManager
.
take
();
log
.
info
(
"获取到消息:{}"
,
take
);
if
(!
StringUtils
.
isEmpty
(
take
))
{
doBusiness
(
take
);
}
}
}
...
...
@@ -47,107 +56,169 @@ public class TestTask {
if
(
testChannel
!=
null
)
{
log
.
info
(
"testChannel不为空:{}"
,
testChannel
);
try
{
EvaReport
evaReport
=
new
EvaReport
();
evaReport
.
setBrowser
(
testChannel
.
getBrowser
());
evaReport
.
setFailCount
(
testChannel
.
getName
()
+
"系统未通过测试,"
+
"未通过测试点共"
+
"10"
+
"个"
);
evaReport
.
setProjectName
(
testChannel
.
getName
());
evaReport
.
setCreateTime
(
new
Date
());
evaReport
.
setSystem
(
"中标麒麟v7龙芯版"
);
evaReport
.
setUrl
(
testChannel
.
getUrl
());
List
<
FailMessage
>
failMessages
=
new
ArrayList
<>();
FailMessage
failMessage
=
new
FailMessage
();
failMessage
.
setUrl
(
"https://voice.baidu.com/act/newpneumonia/newpneumonia/?from=osari_pc_1"
);
failMessage
.
setMessage
(
"抗击疫情打不开响应超时"
);
failMessage
.
setPicture
(
"https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1584955247760&di=f073d6fd65cf71798843c6e4634358dd&imgtype=0&src=http%3A%2F%2Fa0.att.hudong.com%2F78%2F52%2F01200000123847134434529793168.jpg"
);
failMessages
.
add
(
failMessage
);
evaReport
.
setFailMessages
(
failMessages
);
List
<
PageRoute
>
pageRoutes
=
new
ArrayList
<>();
PageRoute
pageRoute
=
new
PageRoute
();
pageRoute
.
setPageName
(
"https://www.baidu.com/"
);
pageRoute
.
setAddress
(
"/baidu"
);
pageRoute
.
setMessage
(
""
);
pageRoute
.
setResponseTime
(
300
);
pageRoute
.
setSuccess
(
0
);
pageRoute
.
setPicture
(
"https://pics4.baidu.com/feed/500fd9f9d72a6059aecf87d92406529d013bbaca.jpeg?token=53433060d4d120e00d8ac6612d2303fd"
);
PageRoute
pageRoute1
=
new
PageRoute
();
pageRoute1
.
setPageName
(
"https://www.baidu.com/"
);
pageRoute1
.
setAddress
(
"/baidu"
);
pageRoute1
.
setMessage
(
"不能访问"
);
pageRoute1
.
setResponseTime
(
300
);
pageRoute1
.
setSuccess
(
1
);
pageRoute1
.
setPicture
(
"https://pics4.baidu.com/feed/500fd9f9d72a6059aecf87d92406529d013bbaca.jpeg?token=53433060d4d120e00d8ac6612d2303fd"
);
pageRoutes
.
add
(
pageRoute
);
pageRoutes
.
add
(
pageRoute1
);
evaReport
.
setPageRoutes
(
pageRoutes
);
List
<
PageContentTest
>
pageContents
=
new
ArrayList
<>();
PageContentTest
pageContentTest
=
new
PageContentTest
();
pageContentTest
.
setUrl
(
"http://news.baidu.com/"
);
List
<
PageContent
>
contents
=
new
ArrayList
<>();
PageContent
pageContent
=
new
PageContent
();
pageContent
.
setParms
(
"国内"
);
pageContent
.
setMessage
(
""
);
pageContent
.
setResponseTime
(
300
);
pageContent
.
setSuccess
(
0
);
PageContent
pageContent1
=
new
PageContent
();
pageContent1
.
setParms
(
"国外"
);
pageContent1
.
setMessage
(
"响应时间过长"
);
pageContent1
.
setResponseTime
(
30000
);
pageContent1
.
setSuccess
(
1
);
contents
.
add
(
pageContent
);
contents
.
add
(
pageContent1
);
pageContentTest
.
setContents
(
contents
);
pageContents
.
add
(
pageContentTest
);
evaReport
.
setPageContents
(
pageContents
);
Project
project
=
new
Project
();
project
.
setBrowser
(
testChannel
.
getBrowser
());
project
.
setName
(
testChannel
.
getName
());
project
.
setUrl
(
testChannel
.
getUrl
());
List
<
RuleSet
>
ruleSets
=
testChannel
.
getRuleSets
();
List
<
Input
>
inputs
=
new
ArrayList
<>();
project
.
setInputs
(
null
);
if
(
ruleSets
!=
null
)
{
for
(
RuleSet
ruleSet
:
ruleSets
)
{
Input
input
=
new
Input
();
input
.
setKey
(
ruleSet
.
getDes
());
input
.
setAttrName
(
ruleSet
.
getCommand
());
input
.
setAttrValue
(
ruleSet
.
getTarget
());
input
.
setValue
(
ruleSet
.
getValue
());
inputs
.
add
(
input
);
}
project
.
setInputs
(
inputs
);
}
//调用黄承天代码
Report
report
=
seleniumExecutor
.
execute
(
project
);
System
.
out
.
println
(
report
);
List
<
Measure
>
measures
=
report
.
getMeasures
();
if
(
measures
!=
null
)
{
long
count
=
measures
.
stream
().
filter
(
m
->
!
m
.
getSuccess
()).
count
();
System
.
out
.
println
(
report
);
EvaReport
evaReport
=
new
EvaReport
();
evaReport
.
setBrowser
(
report
.
getBrowser
());
if
(
count
>
0
)
{
evaReport
.
setFailCount
(
testChannel
.
getName
()
+
"系统未通过测试,"
+
"未通过测试点共"
+
count
+
"个"
);
}
evaReport
.
setFailCount
(
testChannel
.
getName
()
+
"系统通过测试,"
+
"未通过测试点共0个"
);
evaReport
.
setProjectName
(
report
.
getProjectName
());
evaReport
.
setCreateTime
(
new
Date
());
evaReport
.
setSystem
(
"中标麒麟v7龙芯版"
);
evaReport
.
setUrl
(
testChannel
.
getUrl
());
List
<
FailMessage
>
failMessages
=
new
ArrayList
<>();
List
<
Measure
>
measureList
=
measures
.
stream
().
filter
(
m
->
!
m
.
getSuccess
()).
collect
(
Collectors
.
toList
());
for
(
Measure
measure
:
measureList
)
{
FailMessage
failMessage
=
new
FailMessage
();
failMessage
.
setUrl
(
measure
.
getUrl
());
failMessage
.
setMessage
(
measure
.
getMessage
());
failMessage
.
setPicture
(
measure
.
getScreenshot
());
failMessages
.
add
(
failMessage
);
}
evaReport
.
setFailMessages
(
failMessages
);
evaReport
.
setPageRoutes
(
null
);
HashMap
<
String
,
Measure
>
map
=
new
HashMap
<>();
Thread
.
sleep
(
600
);
if
(
testChannel
.
getCodeUrl
()
!=
null
)
{
//解压上传得代码
FileHtmlUtil
.
getFiles
(
testChannel
.
getCodeUrl
(),
null
);
Map
<
String
,
List
<
FileType
>>
alls
=
FileHtmlUtil
.
getAlls
();
//获取项目类型
FileHtmlUtil
.
getFileRoutes
(
testChannel
.
getCodeUrl
());
int
jspcount
=
FileHtmlUtil
.
jspNum
;
int
jscount
=
FileHtmlUtil
.
jsNum
;
int
vuecount
=
FileHtmlUtil
.
vueNum
;
int
angularcount
=
FileHtmlUtil
.
angularNum
;
int
htmlcount
=
FileHtmlUtil
.
count
;
String
fileRoutes
=
null
;
if
(
jspcount
>
0
){
fileRoutes
=
"jsp"
;
}
else
if
(
vuecount
>
0
){
fileRoutes
=
"vue"
;
}
else
if
(
jscount
>
0
){
fileRoutes
=
"react"
;
}
else
if
(
angularcount
>
0
){
fileRoutes
=
"angular"
;
List
<
PageContentTest
>
pageContents
=
new
ArrayList
<>();
for
(
Measure
measure
:
measures
)
{
PageContentTest
pageContentTest
=
new
PageContentTest
();
pageContentTest
.
setUrl
(
measure
.
getUrl
());
pageContentTest
.
setMessage
(
measure
.
getMessage
());
pageContentTest
.
setResponseTime
(
measure
.
getResponseTime
());
pageContentTest
.
setScreenshot
(
measure
.
getScreenshot
());
pageContentTest
.
setSuccess
(
0
);
if
(
measure
.
getSuccess
())
{
pageContentTest
.
setSuccess
(
1
);
}
List
<
ElementDetail
>
elementDetails
=
measure
.
getElementDetails
();
if
(
elementDetails
!=
null
)
{
List
<
PageContent
>
contents
=
new
ArrayList
<>();
for
(
ElementDetail
elementDetail
:
elementDetails
)
{
PageContent
pageContent
=
new
PageContent
();
pageContent
.
setParms
(
elementDetail
.
getType
());
pageContent
.
setMessage
(
elementDetail
.
getMessage
());
pageContent
.
setResponseTime
(
elementDetail
.
getResponseTime
());
pageContent
.
setSuccess
(
0
);
if
(
elementDetail
.
getSuccess
())
{
pageContent
.
setSuccess
(
1
);
}
contents
.
add
(
pageContent
);
}
pageContentTest
.
setContents
(
contents
);
}
pageContents
.
add
(
pageContentTest
);
}
if
(
fileRoutes
!=
null
)
{
List
<
String
>
routerList
=
getRouterList
(
alls
,
fileRoutes
);
List
<
String
>
collect
=
routerList
.
stream
().
map
(
String:
:
toLowerCase
).
distinct
().
collect
(
Collectors
.
toList
());
System
.
out
.
println
(
collect
.
toString
());
evaReport
.
setPageContents
(
pageContents
);
if
(
testChannel
.
getCodeUrl
()
!=
null
)
{
//解压上传得代码
FileHtmlUtil
.
getFiles
(
testChannel
.
getCodeUrl
(),
null
);
Map
<
String
,
List
<
FileType
>>
alls
=
FileHtmlUtil
.
getAlls
();
//获取项目类型
FileHtmlUtil
.
getFileRoutes
(
testChannel
.
getCodeUrl
());
int
jspcount
=
FileHtmlUtil
.
jspNum
;
int
jscount
=
FileHtmlUtil
.
jsNum
;
int
vuecount
=
FileHtmlUtil
.
vueNum
;
int
angularcount
=
FileHtmlUtil
.
angularNum
;
int
htmlcount
=
FileHtmlUtil
.
count
;
String
fileRoutes
=
null
;
if
(
jspcount
>
0
)
{
fileRoutes
=
"jsp"
;
}
else
if
(
vuecount
>
0
)
{
fileRoutes
=
"vue"
;
}
else
if
(
jscount
>
0
)
{
fileRoutes
=
"react"
;
}
else
if
(
angularcount
>
0
)
{
fileRoutes
=
"angular"
;
}
if
(
fileRoutes
!=
null
)
{
Map
<
String
,
List
<
PageRoute
>>
routemap
=
new
HashMap
<>();
List
<
String
>
routerList
=
getRouterList
(
alls
,
fileRoutes
);
List
<
String
>
collect
=
routerList
.
stream
().
map
(
String:
:
toLowerCase
).
distinct
().
collect
(
Collectors
.
toList
());
System
.
out
.
println
(
collect
.
toString
());
if
(
collect
!=
null
)
{
if
(
pageContents
!=
null
)
{
for
(
String
s
:
collect
)
{
if
(
routemap
.
get
(
s
)==
null
)
{
routemap
.
put
(
s
,
null
);
}
for
(
PageContentTest
pageContent
:
pageContents
)
{
if
(
pageContent
.
getUrl
().
contains
(
s
)){
List
<
PageRoute
>
pageRoutes
=
new
ArrayList
<>();
PageRoute
route
=
new
PageRoute
();
route
.
setAddress
(
s
);
route
.
setPageName
(
pageContent
.
getUrl
());
route
.
setSuccess
(
pageContent
.
getSuccess
());
route
.
setResponseTime
(
pageContent
.
getResponseTime
());
route
.
setPicture
(
pageContent
.
getScreenshot
());
route
.
setMessage
(
pageContent
.
getMessage
());
pageRoutes
.
add
(
route
);
List
<
PageRoute
>
ps
=
routemap
.
get
(
s
);
if
(
ps
!=
null
){
routemap
.
put
(
s
,
pageRoutes
);
}
else
{
ps
.
add
(
route
);
routemap
.
put
(
s
,
ps
);
}
}
}
}
}
}
}
FileHtmlUtil
.
clearAll
();
//获取前端代码中得网页路由地址
//比对黄承天代码中访问得地址和路由地址,黄承天是否访问全了。
}
System
.
out
.
println
(
"修改状态"
);
//改变报告状态
String
out
=
JSON
.
toJSONString
(
evaReport
);
System
.
out
.
println
(
id
);
TestReport
testReport
=
new
TestReport
();
testReport
.
setResultId
(
id
);
testReport
.
setOutReport
(
out
);
FileHtmlUtil
.
clearAll
();
//获取前端代码中得网页路由地址
//比对黄承天代码中访问得地址和路由地址,黄承天是否访问全了。
testReportService
.
update
(
testReport
);
autoResultSetService
.
updateByid
(
id
);
}
System
.
out
.
println
(
"修改状态"
);
//改变报告状态
String
out
=
JSON
.
toJSONString
(
evaReport
);
System
.
out
.
println
(
id
);
TestReport
testReport
=
new
TestReport
();
testReport
.
setResultId
(
id
);
testReport
.
setOutReport
(
out
);
testReportService
.
update
(
testReport
);
autoResultSetService
.
updateByid
(
id
);
}
catch
(
InterruptedException
e
)
{
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
...
...
@@ -155,6 +226,7 @@ public class TestTask {
}
private
List
<
String
>
getRouterList
(
Map
<
String
,
List
<
FileType
>>
alls
,
String
fileRoutes
)
{
String
pattern
=
"(\\/:*[a-zA-Z0-9]+)+"
;
List
<
String
>
allRouters
=
new
ArrayList
<>();
Set
<
String
>
all
=
alls
.
keySet
();
//所有的路由
...
...
@@ -164,7 +236,7 @@ public class TestTask {
if
(
fileRoutes
!=
null
)
{
if
(
s1
.
contains
(
"router"
))
{
for
(
FileType
fileBean
:
fileBeans
)
{
allRouters
.
addAll
(
FileHtmlUtil
.
readTxtFile
(
fileBean
.
getAddress
(),
"(\\/:*[a-zA-Z0-9]*)+"
));
allRouters
.
addAll
(
FileHtmlUtil
.
readTxtFile
(
fileBean
.
getAddress
(),
pattern
));
}
}
}
...
...
@@ -173,9 +245,9 @@ public class TestTask {
for
(
String
s1
:
all
)
{
List
<
FileType
>
fileBeans
=
alls
.
get
(
s1
);
if
(
fileRoutes
!=
null
)
{
if
(
s1
.
contains
(
"router"
)||
s1
.
contains
(
"js"
)
)
{
for
(
FileType
fileBean
:
fileBeans
)
{
allRouters
.
addAll
(
FileHtmlUtil
.
readTxtFile
(
fileBean
.
getAddress
(),
"(\\/:*[a-zA-Z0-9]*)+"
));
for
(
FileType
fileBean
:
fileBeans
)
{
if
(
fileBean
.
getSuffix
().
equals
(
"js"
)
)
{
allRouters
.
addAll
(
FileHtmlUtil
.
readTxtFile
(
fileBean
.
getAddress
(),
pattern
));
}
}
}
...
...
@@ -186,7 +258,7 @@ public class TestTask {
if
(
fileRoutes
!=
null
)
{
for
(
FileType
fileBean
:
fileBeans
)
{
if
(
fileBean
.
getSuffix
().
equals
(
"jsp"
))
{
allRouters
.
addAll
(
FileHtmlUtil
.
readTxtFile
(
fileBean
.
getAddress
(),
"(\\/:*[a-zA-Z0-9]*)+"
));
allRouters
.
addAll
(
FileHtmlUtil
.
readTxtFile
(
fileBean
.
getAddress
(),
pattern
));
}
}
}
...
...
src/main/java/com/zjty/autotest/pojo/sjq/PageContentTest.java
浏览文件 @
fd900b68
...
...
@@ -12,5 +12,24 @@ import java.util.List;
@ApiModel
(
description
=
"网页内容测试类"
)
public
class
PageContentTest
{
private
String
url
;
/**
* 是否通过 0不成功 1成功
*/
private
Integer
success
;
/**
* 响应时间
*/
private
Integer
responseTime
;
/**
* 相关信息(未通过理由)
*/
private
String
message
;
/**
* 截图的url
*/
private
String
screenshot
;
private
List
<
PageContent
>
contents
;
}
src/main/java/com/zjty/autotest/service/impl/AsyncServiceImpl.java
浏览文件 @
fd900b68
...
...
@@ -10,6 +10,7 @@ import com.zjty.autotest.pojo.test.Project;
import
com.zjty.autotest.service.AsyncService
;
import
com.zjty.autotest.service.AutoResultSetService
;
import
com.zjty.autotest.service.TestReportService
;
import
com.zjty.autotest.util.FileHtmlUtil
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.context.ApplicationContext
;
import
org.springframework.scheduling.annotation.Async
;
...
...
@@ -140,8 +141,40 @@ public class AsyncServiceImpl implements AsyncService {
if
(
testChannel
.
getCodeUrl
()
!=
null
)
{
//解压上传得代码
//获取前端代码中得网页路由地址
if
(
testChannel
.
getCodeUrl
()
!=
null
)
{
//解压上传得代码
FileHtmlUtil
.
getFiles
(
testChannel
.
getCodeUrl
(),
null
);
Map
<
String
,
List
<
FileType
>>
alls
=
FileHtmlUtil
.
getAlls
();
//获取项目类型
FileHtmlUtil
.
getFileRoutes
(
testChannel
.
getCodeUrl
());
int
jspcount
=
FileHtmlUtil
.
jspNum
;
int
jscount
=
FileHtmlUtil
.
jsNum
;
int
vuecount
=
FileHtmlUtil
.
vueNum
;
int
angularcount
=
FileHtmlUtil
.
angularNum
;
int
htmlcount
=
FileHtmlUtil
.
count
;
String
fileRoutes
=
null
;
if
(
jspcount
>
0
){
fileRoutes
=
"jsp"
;
}
else
if
(
vuecount
>
0
){
fileRoutes
=
"vue"
;
}
else
if
(
jscount
>
0
){
fileRoutes
=
"react"
;
}
else
if
(
angularcount
>
0
){
fileRoutes
=
"angular"
;
}
if
(
fileRoutes
!=
null
)
{
// List<String> routerList = getRouterList(alls, fileRoutes);
// List<String> collect = routerList.stream().map(String::toLowerCase).distinct().collect(Collectors.toList());
// System.out.println(collect.toString());
}
FileHtmlUtil
.
clearAll
();
//获取前端代码中得网页路由地址
//比对黄承天代码中访问得地址和路由地址,黄承天是否访问全了。
}
//比对黄承天代码中访问得地址和路由地址,黄承天是否访问全了。
}
System
.
out
.
println
(
"修改状态"
);
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论