Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
kt-keystone
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
Matrix
kt-keystone
Commits
c8e22201
提交
c8e22201
authored
3月 15, 2022
作者:
mry
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix(base): 自定义简单的testNg模板.DataBean中的数据到报告中的转换
上级
75a395c4
全部展开
隐藏空白字符变更
内嵌
并排
正在显示
12 个修改的文件
包含
112 行增加
和
124 行删除
+112
-124
InterfaceInformation.java
...java/org/matrix/database/entity/InterfaceInformation.java
+6
-0
TestPigeon.java
kt-base/src/main/java/org/matrix/testNg/TestPigeon.java
+30
-34
DataBean.java
kt-base/src/main/java/org/matrix/testNg/report/DataBean.java
+10
-50
GenerateReporter.java
.../main/java/org/matrix/testNg/report/GenerateReporter.java
+7
-16
ReportUnits.java
...e/src/main/java/org/matrix/testNg/report/ReportUnits.java
+22
-0
ReporterData.java
.../src/main/java/org/matrix/testNg/report/ReporterData.java
+37
-9
TestResultSort.java
...rc/main/java/org/matrix/testNg/report/TestResultSort.java
+0
-15
index.html
kt-base/src/main/resources/templates/index.html
+0
-0
overview.ftl
kt-base/src/main/resources/templates/overview.ftl
+0
-0
testng.xml
kt-script/src/main/java/org/matrix/testng.xml
+0
-0
SwaggerController.java
...ava/org/matrix/autotest/controller/SwaggerController.java
+0
-0
PageTools.java
...eb/src/main/java/org/matrix/autotest/utils/PageTools.java
+0
-0
没有找到文件。
kt-base/src/main/java/org/matrix/database/entity/InterfaceInformation.java
浏览文件 @
c8e22201
...
@@ -19,6 +19,12 @@ import java.util.List;
...
@@ -19,6 +19,12 @@ import java.util.List;
@ApiModel
(
value
=
"接口信息"
)
@ApiModel
(
value
=
"接口信息"
)
public
class
InterfaceInformation
{
public
class
InterfaceInformation
{
/**
* id
*/
@ApiModelProperty
(
value
=
"id"
)
private
Long
id
;
/**
/**
* ip 以及端口信息
* ip 以及端口信息
*/
*/
...
...
kt-base/src/main/java/org/matrix/testNg/TestPigeon.java
浏览文件 @
c8e22201
package
org
.
matrix
.
testNg
;
package
org
.
matrix
.
testNg
;
import
com.baomidou.mybatisplus.core.toolkit.Wrappers
;
import
com.baomidou.mybatisplus.core.toolkit.Wrappers
;
import
lombok.extern.slf4j.Slf4j
;
import
org.matrix.BaseBootApplication
;
import
org.matrix.BaseBootApplication
;
import
org.matrix.actuators.checkpoint.CheckPointActuator
;
import
org.matrix.actuators.checkpoint.CheckPointActuator
;
import
org.matrix.actuators.checkpoint.CheckPointResult
;
import
org.matrix.actuators.httpclient.HttpClientActuator
;
import
org.matrix.actuators.httpclient.HttpClientActuator
;
import
org.matrix.actuators.usecase.CaseActuator
;
import
org.matrix.actuators.usecase.CaseActuator
;
import
org.matrix.actuators.usecase.TestCaseExecuteResult
;
import
org.matrix.actuators.usecase.TestCaseExecuteResult
;
import
org.matrix.database.entity.TestCase
;
import
org.matrix.database.entity.TestCase
;
import
org.matrix.database.entity.TestCase
BTO
;
import
org.matrix.database.entity.TestCase
ListDataBto
;
import
org.matrix.database.entity.TestData
;
import
org.matrix.database.entity.TestData
;
import
org.matrix.database.service.ITestCaseService
;
import
org.matrix.database.service.ITestCaseService
;
import
org.matrix.database.service.ITestDataService
;
import
org.matrix.database.service.ITestDataService
;
import
org.matrix.exception.GlobalException
;
import
org.matrix.exception.GlobalException
;
import
org.matrix.socket.queue.LogQueueRuntime
;
import
org.matrix.socket.vo.CaseExecuteVo
;
import
org.matrix.socket.pool.TestCaseExecuteSocketPool
;
import
org.matrix.socket.enums.TestExecuteType
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.boot.test.context.SpringBootTest
;
import
org.springframework.boot.test.context.SpringBootTest
;
import
org.springframework.stereotype.Component
;
import
org.springframework.stereotype.Component
;
import
org.springframework.test.context.testng.AbstractTestNGSpringContextTests
;
import
org.springframework.test.context.testng.AbstractTestNGSpringContextTests
;
import
org.testng.ITestResult
;
import
org.testng.annotations.BeforeClass
;
import
org.testng.Reporter
;
import
org.testng.annotations.DataProvider
;
import
org.testng.annotations.*
;
import
org.testng.annotations.Parameters
;
import
org.testng.annotations.Test
;
import
java.util.HashMap
;
import
java.util.Iterator
;
import
java.util.Iterator
;
import
java.util.List
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Map
;
import
java.util.UUID
;
/**
/**
* @author mry
* @author mry
*/
*/
@Slf4j
@Component
@Component
@SpringBootTest
(
classes
=
BaseBootApplication
.
class
)
@SpringBootTest
(
classes
=
BaseBootApplication
.
class
)
public
class
TestPigeon
extends
AbstractTestNGSpringContextTests
{
public
class
TestPigeon
extends
AbstractTestNGSpringContextTests
{
String
sql
;
String
sql
;
...
@@ -77,6 +76,7 @@ public class TestPigeon extends AbstractTestNGSpringContextTests {
...
@@ -77,6 +76,7 @@ public class TestPigeon extends AbstractTestNGSpringContextTests {
this
.
projectId
=
projectId
;
this
.
projectId
=
projectId
;
}
}
/**
/**
* XML中的SQL决定了执行什么用例, 执行多少条用例, SQL的搜索结果为需要测试的测试用例
* XML中的SQL决定了执行什么用例, 执行多少条用例, SQL的搜索结果为需要测试的测试用例
*/
*/
...
@@ -85,37 +85,33 @@ public class TestPigeon extends AbstractTestNGSpringContextTests {
...
@@ -85,37 +85,33 @@ public class TestPigeon extends AbstractTestNGSpringContextTests {
return
new
DataProviderForDb
(
driver
,
url
,
username
,
password
,
sql
);
return
new
DataProviderForDb
(
driver
,
url
,
username
,
password
,
sql
);
}
}
public
static
Map
<
Long
,
Map
<
Long
,
List
<
TestCaseExecuteResult
>>>
userResultMap
=
new
HashMap
<>();
public
static
Map
<
Long
,
List
<
TestCaseExecuteResult
>>
resultMap
=
new
HashMap
<>();
@Test
(
dataProvider
=
"testData"
)
@Test
(
dataProvider
=
"testData"
)
public
void
test
(
Map
<
String
,
String
>
data
)
{
public
void
test
(
Map
<
String
,
String
>
data
)
{
long
caseId
=
Long
.
parseLong
(
data
.
get
(
"id"
));
log
.
info
(
"这是testData"
);
String
id
=
data
.
get
(
"id"
);
long
caseId
=
Long
.
parseLong
(
id
);
TestCase
testCase
=
java
.
util
.
Optional
.
of
(
caseService
.
getById
(
caseId
))
TestCase
testCase
=
java
.
util
.
Optional
.
of
(
caseService
.
getById
(
caseId
))
.
orElseThrow
(()
->
new
GlobalException
(
String
.
format
(
"没有找到id = %d 的TestCase"
,
caseId
)));
.
orElseThrow
(()
->
new
GlobalException
(
String
.
format
(
"没有找到id = %d 的TestCase"
,
caseId
)));
List
<
TestData
>
testDataList
=
java
.
util
.
Optional
.
of
(
dataService
.
list
(
Wrappers
.
lambdaQuery
(
TestData
.
class
)
List
<
TestData
>
testDataList
=
java
.
util
.
Optional
.
of
(
dataService
.
list
(
Wrappers
.
lambdaQuery
(
TestData
.
class
)
.
eq
(
TestData:
:
getTestCaseId
,
caseId
)))
.
eq
(
TestData:
:
getTestCaseId
,
caseId
)))
.
orElseThrow
(()
->
new
GlobalException
(
String
.
format
(
"没有找到testCaseId = %d 的TestData"
,
caseId
)));
.
orElseThrow
(()
->
new
GlobalException
(
String
.
format
(
"没有找到testCaseId = %d 的TestData"
,
caseId
)));
TestCaseBTO
testCaseBTO
=
new
TestCaseBTO
();
CaseExecuteVo
caseExecuteVo
=
new
CaseExecuteVo
();
testCaseBTO
.
setTestCase
(
testCase
);
caseExecuteVo
.
setProjectId
(
testCase
.
getProjectId
());
String
unionKey
=
UUID
.
randomUUID
().
toString
();
caseExecuteVo
.
setEnvId
(
envId
);
LogQueueRuntime
caseExecuteVo
.
setUserId
(
1L
);
.
initTestCaseLog
(
null
caseExecuteVo
.
getTestCaseListDataBtoList
().
add
(
,
1L
new
TestCaseListDataBto
(
,
testCase
.
getId
()
testCase
,
,
TestExecuteType
.
TEST_CASE
testDataList
,
unionKey
)
);
);
for
(
TestData
testData
:
testDataList
)
{
List
<
TestCaseExecuteResult
>
testCaseExecuteResults
=
caseActuator
.
runTestCase
(
null
,
caseExecuteVo
);
testCaseBTO
.
setTestData
(
testData
);
resultMap
.
put
(
caseId
,
testCaseExecuteResults
);
TestCaseExecuteResult
testCaseExecuteResult
=
caseActuator
.
executeTestCase
(
testCaseBTO
,
envId
,
projectId
);
userResultMap
.
put
(
1L
,
resultMap
);
CheckPointResult
checkPointResult
=
testCaseExecuteResult
.
getCheckPointResult
();
Reporter
.
log
(
checkPointResult
.
toString
());
}
//将本次产生的数据清除
TestCaseExecuteSocketPool
.
remove
(
Thread
.
currentThread
().
getId
());
}
}
@AfterMethod
public
void
afterMethod
(
ITestResult
result
,
Object
[]
objs
)
{
System
.
out
.
println
(
"正在运行的方法:"
+
result
.
getName
());
}
}
}
kt-base/src/main/java/org/matrix/testNg/report/DataBean.java
浏览文件 @
c8e22201
...
@@ -7,6 +7,8 @@ import lombok.NoArgsConstructor;
...
@@ -7,6 +7,8 @@ import lombok.NoArgsConstructor;
import
java.util.List
;
import
java.util.List
;
/**
/**
* 定义模板中需要的信息
*
* @author mruny
* @author mruny
*/
*/
@Data
@Data
...
@@ -39,16 +41,6 @@ public class DataBean {
...
@@ -39,16 +41,6 @@ public class DataBean {
*/
*/
private
int
allTestsSize
;
private
int
allTestsSize
;
// /**
// * 全部执行的测试方法
// */
// private ITestNGMethod[] allTestsMethod;
// /**
// * 未执行的测试方法
// */
// private Collection<ITestNGMethod> excludeTestsMethod;
/**
/**
* 测试耗时
* 测试耗时
*/
*/
...
@@ -60,7 +52,7 @@ public class DataBean {
...
@@ -60,7 +52,7 @@ public class DataBean {
private
String
passPercent
;
private
String
passPercent
;
/**
/**
* 单个测试
周期
* 单个测试
时间
*/
*/
private
String
duration
;
private
String
duration
;
...
@@ -72,7 +64,7 @@ public class DataBean {
...
@@ -72,7 +64,7 @@ public class DataBean {
/**
/**
* 测试描述
* 测试描述
*/
*/
private
String
des
;
private
String
des
cription
;
/**
/**
* Reporter Output
* Reporter Output
...
@@ -97,7 +89,7 @@ public class DataBean {
...
@@ -97,7 +89,7 @@ public class DataBean {
/**
/**
* 结果信息
* 结果信息
*/
*/
private
String
resultMessage
;
private
Object
resultMessage
;
/**
/**
* 用例名称
* 用例名称
...
@@ -109,6 +101,11 @@ public class DataBean {
...
@@ -109,6 +101,11 @@ public class DataBean {
*/
*/
private
String
type
;
private
String
type
;
/**
* 详情参数
*/
private
String
detail
;
/**
/**
* 前置行动ID组,例如:1,2,3
* 前置行动ID组,例如:1,2,3
*/
*/
...
@@ -124,40 +121,4 @@ public class DataBean {
...
@@ -124,40 +121,4 @@ public class DataBean {
*/
*/
private
String
moveAfterTest
;
private
String
moveAfterTest
;
/**
* 是否进行异常检验,0为否,1为是
*/
private
Integer
abnormalCheckpoint
=
0
;
/**
* 是否进行非空检验,0为否,1为是
*/
private
Integer
noEmptyCheckpoint
=
0
;
/**
* 包含某字段检验(例如 张三,李四) 则对检查结果中是否包含张三或者李四
*/
private
String
containCheckpoint
;
/**
* 不包含某字段检验(例如 张三,李四) 则对检查结果中是否不包含张三或者李四
*/
private
String
noContainCheckpoint
;
/**
* 数据库检验点,以JSON形式存放
*/
private
String
databaseCheckpoint
;
/**
* jsonpath检验点,以json形式存放
*/
private
String
jsonpathCheckpoint
;
/**
* 详情参数
*/
private
String
detail
;
}
}
\ No newline at end of file
kt-base/src/main/java/org/matrix/testNg/report/GenerateReporter.java
浏览文件 @
c8e22201
...
@@ -4,6 +4,7 @@ import freemarker.template.Configuration;
...
@@ -4,6 +4,7 @@ import freemarker.template.Configuration;
import
freemarker.template.Template
;
import
freemarker.template.Template
;
import
freemarker.template.TemplateExceptionHandler
;
import
freemarker.template.TemplateExceptionHandler
;
import
org.matrix.exception.GlobalException
;
import
org.matrix.exception.GlobalException
;
import
org.matrix.testNg.TestPigeon
;
import
org.testng.*
;
import
org.testng.*
;
import
org.testng.xml.XmlSuite
;
import
org.testng.xml.XmlSuite
;
...
@@ -11,7 +12,6 @@ import java.io.*;
...
@@ -11,7 +12,6 @@ import java.io.*;
import
java.nio.charset.StandardCharsets
;
import
java.nio.charset.StandardCharsets
;
import
java.time.LocalDateTime
;
import
java.time.LocalDateTime
;
import
java.time.format.DateTimeFormatter
;
import
java.time.format.DateTimeFormatter
;
import
java.util.Collection
;
import
java.util.HashMap
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Map
;
...
@@ -28,8 +28,7 @@ public class GenerateReporter implements IReporter {
...
@@ -28,8 +28,7 @@ public class GenerateReporter implements IReporter {
private
static
final
String
FILE_NAME
=
STRING
+
"-testNg.html"
;
private
static
final
String
FILE_NAME
=
STRING
+
"-testNg.html"
;
@Override
@Override
public
void
generateReport
(
List
<
XmlSuite
>
xmlSuites
,
List
<
ISuite
>
suites
,
public
void
generateReport
(
List
<
XmlSuite
>
xmlSuites
,
List
<
ISuite
>
suites
,
String
outputDirectory
)
{
String
outputDirectory
)
{
try
{
try
{
//freemaker的配置
//freemaker的配置
Configuration
cfg
=
new
Configuration
(
Configuration
.
VERSION_2_3_28
);
Configuration
cfg
=
new
Configuration
(
Configuration
.
VERSION_2_3_28
);
...
@@ -38,31 +37,23 @@ public class GenerateReporter implements IReporter {
...
@@ -38,31 +37,23 @@ public class GenerateReporter implements IReporter {
cfg
.
setTemplateExceptionHandler
(
TemplateExceptionHandler
.
RETHROW_HANDLER
);
cfg
.
setTemplateExceptionHandler
(
TemplateExceptionHandler
.
RETHROW_HANDLER
);
//freemaker的模板文件
//freemaker的模板文件
Template
temp
=
cfg
.
getTemplate
(
"overview.ftl"
);
Template
temp
=
cfg
.
getTemplate
(
"overview.ftl"
);
Map
context
=
new
HashMap
();
Map
context
=
new
HashMap
();
for
(
ISuite
suite
:
suites
)
{
for
(
ISuite
suite
:
suites
)
{
Map
<
String
,
ISuiteResult
>
suiteResults
=
suite
.
getResults
();
Map
<
String
,
ISuiteResult
>
suiteResults
=
suite
.
getResults
();
for
(
ISuiteResult
suiteResult
:
suiteResults
.
values
())
{
for
(
ISuiteResult
suiteResult
:
suiteResults
.
values
())
{
ReporterData
data
=
new
ReporterData
();
ReporterData
data
=
new
ReporterData
();
ITestContext
testContext
=
suiteResult
.
getTestContext
();
ITestContext
testContext
=
suiteResult
.
getTestContext
();
//
把数据填入上下文 测试结果汇总信息
//
这里是summary中的信息.
context
.
put
(
"overView"
,
data
.
testContext
(
testContext
));
context
.
put
(
"overView"
,
data
.
testContext
(
testContext
));
//所有的测试方法
//测试通过的测试方法
ITestNGMethod
[]
allTests
=
testContext
.
getAllTestMethods
();
//未执行的测试方法
Collection
<
ITestNGMethod
>
excludeTests
=
testContext
.
getExcludedMethods
();
IResultMap
passedTests
=
testContext
.
getPassedTests
();
IResultMap
passedTests
=
testContext
.
getPassedTests
();
//测试失败的测试方法
//测试失败的测试方法
IResultMap
failedTests
=
testContext
.
getFailedTests
();
IResultMap
failedTests
=
testContext
.
getFailedTests
();
//测试跳过的测试方法
//测试跳过的测试方法
IResultMap
skippedTests
=
testContext
.
getSkippedTests
();
IResultMap
skippedTests
=
testContext
.
getSkippedTests
();
context
.
put
(
"pass"
,
data
.
testResults
(
passedTests
,
ITestResult
.
SUCCESS
));
context
.
put
(
"pass"
,
data
.
testResults
(
passedTests
,
ITestResult
.
SUCCESS
));
context
.
put
(
"fail"
,
data
.
testResults
(
failedTests
,
ITestResult
.
FAILURE
));
context
.
put
(
"fail"
,
data
.
testResults
(
failedTests
,
ITestResult
.
FAILURE
));
context
.
put
(
"skip"
,
data
.
testResults
(
skippedTests
,
ITestResult
.
FAILURE
));
context
.
put
(
"skip"
,
data
.
testResults
(
skippedTests
,
ITestResult
.
FAILURE
));
context
.
put
(
"allTest"
,
allTests
);
context
.
put
(
"excludeTests"
,
excludeTests
);
}
}
}
}
//文件夹不存在的话进行创建
//文件夹不存在的话进行创建
...
@@ -78,8 +69,9 @@ public class GenerateReporter implements IReporter {
...
@@ -78,8 +69,9 @@ public class GenerateReporter implements IReporter {
writer
.
flush
();
writer
.
flush
();
}
catch
(
Exception
e
)
{
}
catch
(
Exception
e
)
{
throw
new
GlobalException
(
e
.
getMessage
());
throw
new
GlobalException
(
e
.
getMessage
());
}
finally
{
TestPigeon
.
resultMap
=
new
HashMap
<>();
TestPigeon
.
userResultMap
=
new
HashMap
<>();
}
}
}
}
}
}
\ No newline at end of file
kt-base/src/main/java/org/matrix/testNg/report/ReportUnits.java
浏览文件 @
c8e22201
package
org
.
matrix
.
testNg
.
report
;
package
org
.
matrix
.
testNg
.
report
;
import
org.matrix.database.entity.TestCase
;
import
org.matrix.database.service.ITestCaseService
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.testng.ITestContext
;
import
org.testng.ITestContext
;
import
org.testng.ITestResult
;
import
org.testng.ITestResult
;
import
org.testng.Reporter
;
import
org.testng.Reporter
;
...
@@ -8,7 +11,16 @@ import java.text.DecimalFormat;
...
@@ -8,7 +11,16 @@ import java.text.DecimalFormat;
import
java.text.NumberFormat
;
import
java.text.NumberFormat
;
import
java.util.*
;
import
java.util.*
;
/**
* 工具类
*
* @author mruny
*/
public
class
ReportUnits
{
public
class
ReportUnits
{
@Autowired
private
ITestCaseService
testCaseService
;
private
static
final
NumberFormat
DURATION_FORMAT
=
new
DecimalFormat
(
"#0.000"
);
private
static
final
NumberFormat
DURATION_FORMAT
=
new
DecimalFormat
(
"#0.000"
);
private
static
final
NumberFormat
PERCENTAGE_FORMAT
=
new
DecimalFormat
(
"#0.00%"
);
private
static
final
NumberFormat
PERCENTAGE_FORMAT
=
new
DecimalFormat
(
"#0.00%"
);
...
@@ -108,4 +120,13 @@ public class ReportUnits {
...
@@ -108,4 +120,13 @@ public class ReportUnits {
}
}
return
buffer
.
toString
();
return
buffer
.
toString
();
}
}
private
String
getName
(
ITestResult
result
)
{
String
name
=
result
.
getName
();
List
<
TestCase
>
list
=
testCaseService
.
list
();
for
(
TestCase
testCase
:
list
)
{
name
=
testCase
.
getName
();
}
return
commaSeparate
(
Collections
.
singleton
(
name
));
}
}
}
\ No newline at end of file
kt-base/src/main/java/org/matrix/testNg/report/ReporterData.java
浏览文件 @
c8e22201
package
org
.
matrix
.
testNg
.
report
;
package
org
.
matrix
.
testNg
.
report
;
import
lombok.extern.slf4j.Slf4j
;
import
org.matrix.actuators.checkpoint.CheckPointResult
;
import
org.matrix.actuators.usecase.TestCaseExecuteResult
;
import
org.matrix.database.entity.TestCase
;
import
org.matrix.database.entity.TestCase
;
import
org.matrix.database.service.ITestCaseService
;
import
org.matrix.database.service.ITestCaseService
;
import
org.matrix.exception.GlobalException
;
import
org.matrix.testNg.TestPigeon
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Component
;
import
org.testng.*
;
import
org.testng.*
;
import
java.util.*
;
import
java.util.*
;
...
@@ -10,15 +16,18 @@ import java.util.*;
...
@@ -10,15 +16,18 @@ import java.util.*;
/**
/**
* @author mruny
* @author mruny
*/
*/
@Slf4j
@Component
public
class
ReporterData
{
public
class
ReporterData
{
// @Autowired
private
static
ITestCaseService
testCaseService
;
// private ITestCaseService testCaseService;
//
// public TestCase getTestCase(){
// }
// 测试结果Set<ITestResult>转为list,再按执行时间排序 ,返回list
@Autowired
private
void
setITestDataService
(
ITestCaseService
testCaseService
)
{
ReporterData
.
testCaseService
=
testCaseService
;
}
//测试结果Set<ITestResult>转为list,再按执行时间排序 ,返回list
public
List
<
ITestResult
>
sortByTime
(
Set
<
ITestResult
>
str
)
{
public
List
<
ITestResult
>
sortByTime
(
Set
<
ITestResult
>
str
)
{
List
<
ITestResult
>
list
=
new
ArrayList
<
ITestResult
>();
List
<
ITestResult
>
list
=
new
ArrayList
<
ITestResult
>();
for
(
ITestResult
r
:
str
)
{
for
(
ITestResult
r
:
str
)
{
...
@@ -28,10 +37,12 @@ public class ReporterData {
...
@@ -28,10 +37,12 @@ public class ReporterData {
return
list
;
return
list
;
}
}
//模板中的公共部分
public
DataBean
testContext
(
ITestContext
context
)
{
public
DataBean
testContext
(
ITestContext
context
)
{
// 测试结果汇总数据
// 测试结果汇总数据
DataBean
data
=
new
DataBean
();
DataBean
data
=
new
DataBean
();
ReportUnits
units
=
new
ReportUnits
();
ReportUnits
units
=
new
ReportUnits
();
//通过,失败,跳过的测试用例
IResultMap
passedTests
=
context
.
getPassedTests
();
IResultMap
passedTests
=
context
.
getPassedTests
();
IResultMap
failedTests
=
context
.
getFailedTests
();
IResultMap
failedTests
=
context
.
getFailedTests
();
IResultMap
skipedTests
=
context
.
getSkippedTests
();
IResultMap
skipedTests
=
context
.
getSkippedTests
();
...
@@ -52,20 +63,37 @@ public class ReporterData {
...
@@ -52,20 +63,37 @@ public class ReporterData {
return
data
;
return
data
;
}
}
//每条测试用例的细节
public
List
<
DataBean
>
testResults
(
IResultMap
map
,
int
status
)
{
public
List
<
DataBean
>
testResults
(
IResultMap
map
,
int
status
)
{
// 测试结果详细数据
// 测试结果详细数据
List
<
DataBean
>
list
=
new
ArrayList
<
DataBean
>();
List
<
DataBean
>
list
=
new
ArrayList
<
DataBean
>();
//工具类
ReportUnits
units
=
new
ReportUnits
();
ReportUnits
units
=
new
ReportUnits
();
map
.
getAllResults
().
size
();
for
(
ITestResult
result
:
sortByTime
(
map
.
getAllResults
()))
{
for
(
ITestResult
result
:
sortByTime
(
map
.
getAllResults
()))
{
DataBean
data
=
new
DataBean
();
DataBean
data
=
new
DataBean
();
data
.
setDuration
(
units
.
formatDuration
(
result
.
getEndMillis
()
data
.
setDuration
(
units
.
formatDuration
(
result
.
getEndMillis
()
-
result
.
getStartMillis
()));
-
result
.
getStartMillis
()));
data
.
setParams
(
units
.
getParams
(
result
));
data
.
setParams
(
units
.
getParams
(
result
));
String
params
=
data
.
getParams
();
//testCase主键id
String
id
=
params
.
replace
(
"{id="
,
""
).
replace
(
"}"
,
""
);
log
.
info
(
"这里是testResults"
);
long
caseId
=
Long
.
parseLong
(
id
);
Map
<
Long
,
List
<
TestCaseExecuteResult
>>
longListMap
=
TestPigeon
.
userResultMap
.
get
(
1L
);
List
<
TestCaseExecuteResult
>
testCaseExecuteResults
=
longListMap
.
get
(
caseId
);
TestCase
testCase
=
java
.
util
.
Optional
.
of
(
testCaseService
.
getById
(
caseId
))
.
orElseThrow
(()
->
new
GlobalException
(
String
.
format
(
"没有找到id = %d 的TestCase"
,
caseId
)));
data
.
setTestCaseName
(
testCase
.
getName
());
data
.
setOutput
(
Reporter
.
getOutput
(
result
));
data
.
setOutput
(
Reporter
.
getOutput
(
result
));
data
.
setDependMethod
(
units
.
getDependMethods
(
result
));
data
.
setDependMethod
(
units
.
getDependMethods
(
result
));
data
.
setType
(
String
.
valueOf
(
testCase
.
getType
()));
data
.
setDetail
(
testCase
.
getDetail
());
data
.
setMoveBefore
(
testCase
.
getMoveBefore
());
data
.
setMoveAfterCase
(
testCase
.
getMoveAfterCase
());
data
.
setMoveAfterTest
(
testCase
.
getMoveAfterTest
());
data
.
setDescription
(
testCase
.
getDes
());
data
.
setResultMessage
(
"message"
);
data
.
setThrowable
(
result
.
getThrowable
());
if
(
result
.
getThrowable
()
!=
null
)
{
if
(
result
.
getThrowable
()
!=
null
)
{
data
.
setStackTrace
(
result
.
getThrowable
().
getStackTrace
());
data
.
setStackTrace
(
result
.
getThrowable
().
getStackTrace
());
}
}
...
...
kt-base/src/main/java/org/matrix/testNg/report/TestResultSort.java
deleted
100644 → 0
浏览文件 @
75a395c4
package
org
.
matrix
.
testNg
.
report
;
import
org.testng.ITestResult
;
public
class
TestResultSort
implements
Comparable
<
ITestResult
>
{
private
Long
order
;
@Override
public
int
compareTo
(
ITestResult
arg0
)
{
return
this
.
order
.
compareTo
(
arg0
.
getStartMillis
());
//按test开始时间排序
}
}
\ No newline at end of file
kt-base/src/main/resources/templates/index.html
0 → 100644
浏览文件 @
c8e22201
This source diff could not be displayed because it is too large. You can
view the blob
instead.
kt-base/src/main/resources/templates/overview.ftl
浏览文件 @
c8e22201
差异被折叠。
点击展开。
kt-script/src/main/java/org/matrix/testng.xml
浏览文件 @
c8e22201
差异被折叠。
点击展开。
kt-web/src/main/java/org/matrix/autotest/controller/SwaggerController.java
浏览文件 @
c8e22201
差异被折叠。
点击展开。
kt-web/src/main/java/org/matrix/autotest/utils/PageTools.java
浏览文件 @
c8e22201
差异被折叠。
点击展开。
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论