Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
X
xm-sportstest
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
xiamai-test
xm-sportstest
Commits
62526d54
Commit
62526d54
authored
Jul 17, 2024
by
yangfangfang
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
数据中心
parent
24786996
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
335 additions
and
0 deletions
+335
-0
module/polar/数据中心.xml
+17
-0
src/main/java/com/xiaomai/cases/polar/data/salesData/SalesDataTools.java
+75
-0
src/main/java/com/xiaomai/cases/polar/data/salesData/TestCenterData.java
+161
-0
src/main/java/com/xiaomai/cases/polar/data/salesData/TestTrend.java
+82
-0
No files found.
module/polar/数据中心.xml
0 → 100644
View file @
62526d54
<?xml version="1.0" encoding="UTF-8"?>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite
name=
"数据中心场景case"
>
<!-- 起一个好听且唯一的名字-->
<test
name=
"数据中心模块测试"
preserve-order=
"true"
verbose=
"3"
>
<!-- 再起一个听且唯一的名字 -->
<packages>
<package
name=
"com.xiaomai.cases.polar.data.*"
></package>
<!-- 添加自己想要集成测试的case 范围自己定 -->
</packages>
</test>
<listeners>
<listener
class-name=
"com.xiaomai.client.RetryListener"
/>
<listener
class-name=
"com.xiaomai.client.TestListener"
/>
<listener
class-name=
"com.xiaomai.client.ExtentTestNGIReporterListener"
/>
</listeners>
</suite>
\ No newline at end of file
src/main/java/com/xiaomai/cases/polar/data/salesData/SalesDataTools.java
0 → 100644
View file @
62526d54
package
com
.
xiaomai
.
cases
.
polar
.
data
.
salesData
;
import
com.alibaba.fastjson.JSONObject
;
import
com.xiaomai.client.DataUserInfo
;
import
com.xiaomai.enums.ApiModule
;
import
com.xiaomai.enums.RequestType
;
import
com.xiaomai.enums.Terminal
;
import
com.xiaomai.utils.XMBaseTest
;
import
java.math.BigDecimal
;
import
java.util.Date
;
public
class
SalesDataTools
extends
XMBaseTest
{
/**
* @param
* @description:销售数据-数据分析-汇总
* @param dateType:时间类型:[ DAY, WEEK, MONTH, QUARTER, YEAR ]
* @param endTime:结束时间
* @param startTime:开始时间
* @author: yangfangfang
**/
public
JSONObject
centerData
(
String
dateType
,
long
endTime
,
long
startTime
,
DataUserInfo
...
dataUserInfos
){
dataApi
.
setApiModule
(
ApiModule
.
Polar_Data
)
.
setApiName
(
"API_centerData"
)
.
setTerminal
(
Terminal
.
B
);
super
.
beforeDataRequest
(
dataUserInfos
);
JSONObject
analysis
=
new
JSONObject
();
analysis
.
put
(
"dateType"
,
dateType
);
analysis
.
put
(
"endTime"
,
endTime
);
analysis
.
put
(
"startTime"
,
startTime
);
analysis
.
put
(
"brandId"
,
xmAppApi
.
getLoginInfo
().
getBrandId
());
analysis
.
put
(
"studioId"
,
xmAppApi
.
getLoginInfo
().
getStudioId
());
analysis
.
put
(
"operatorId"
,
xmAppApi
.
getLoginInfo
().
getAdminId
());
dataApi
.
doRequest
(
RequestType
.
JSON
,
dataparams
,
analysis
.
toJSONString
(),
dataheadrs
).
assetsSuccess
(
true
);
JSONObject
response
=
dataApi
.
getBodyInJSON
();
return
response
;
}
/**
* @param
* @description:销售数据-趋势图
* @param dateType:时间类型:[ DAY, WEEK, MONTH, QUARTER, YEAR ]
* @param metric:时间类型:[ "新增会员数", "签单实收金额" ][ NEW_MEMBER_COUNT, SIGN_ORDER_ACTUAL_AMOUNT ]
* @param endTime:结束时间 注意:使用这个方法只能搜按天和按月,因为参数类型这里写的long 其他几个不是long型,会用不了
* @param startTime:开始时间
* @author: yangfangfang
**/
public
JSONObject
trend
(
String
dateType
,
String
metric
,
long
endTime
,
long
startTime
,
DataUserInfo
...
dataUserInfos
){
dataApi
.
setApiModule
(
ApiModule
.
Polar_Data
)
.
setApiName
(
"API_saleDataTrend"
)
.
setTerminal
(
Terminal
.
B
);
super
.
beforeDataRequest
(
dataUserInfos
);
JSONObject
trend
=
new
JSONObject
();
trend
.
put
(
"dateType"
,
dateType
);
trend
.
put
(
"endTime"
,
endTime
);
trend
.
put
(
"startTime"
,
startTime
);
trend
.
put
(
"metric"
,
metric
);
trend
.
put
(
"brandId"
,
xmAppApi
.
getLoginInfo
().
getBrandId
());
trend
.
put
(
"studioId"
,
xmAppApi
.
getLoginInfo
().
getStudioId
());
trend
.
put
(
"operatorId"
,
xmAppApi
.
getLoginInfo
().
getAdminId
());
dataApi
.
doRequest
(
RequestType
.
JSON
,
dataparams
,
trend
.
toJSONString
(),
dataheadrs
).
assetsSuccess
(
true
);
JSONObject
response
=
dataApi
.
getBodyInJSON
();
return
response
;
}
}
src/main/java/com/xiaomai/cases/polar/data/salesData/TestCenterData.java
0 → 100644
View file @
62526d54
package
com
.
xiaomai
.
cases
.
polar
.
data
.
salesData
;
import
com.alibaba.fastjson.JSONObject
;
import
com.xiaomai.cases.polar.clue.MemberTools
;
import
com.xiaomai.cases.polar.finance.order.OrderTools
;
import
com.xiaomai.cases.polar.memberCard.CardTools
;
import
com.xiaomai.enums.ApiModule
;
import
com.xiaomai.enums.LoginAccount
;
import
com.xiaomai.enums.RequestType
;
import
com.xiaomai.enums.Terminal
;
import
com.xiaomai.utils.RandomStringUtil
;
import
com.xiaomai.utils.TimeUtils
;
import
com.xiaomai.utils.XMBaseTest
;
import
org.testng.Assert
;
import
org.testng.annotations.BeforeMethod
;
import
org.testng.annotations.Test
;
import
java.math.BigDecimal
;
public
class
TestCenterData
extends
XMBaseTest
{
MemberTools
memberTools
=
new
MemberTools
();
OrderTools
orderTools
=
new
OrderTools
();
CardTools
cardTools
=
new
CardTools
();
SalesDataTools
salesDataTools
=
new
SalesDataTools
();
String
memberId
;
String
cardId
;
String
getDetailId
;
float
paidAmount
;
@BeforeMethod
public
void
beforeTest
(){
xmAppApi
.
setApiModule
(
ApiModule
.
Polar_Data
)
.
setApiName
(
"API_centerData"
)
.
setLoginUser
(
LoginAccount
.
GYM_PROD
)
.
setTerminal
(
Terminal
.
B
);
dal
.
setCase_owner
(
"yff"
)
.
setCase_name
(
Thread
.
currentThread
().
getStackTrace
()[
1
].
getFileName
().
split
(
"\\."
)[
0
]);
super
.
beforeTest
();
}
@Test
(
description
=
"销售数据-数据分析-汇总"
)
public
void
testCenterData
(){
//先查一下当前今天的销售数据-数据分析-汇总
JSONObject
beforeAnalysis
=
salesDataTools
.
centerData
(
"DAY"
,
TimeUtils
.
getTodayEndTime
(),
TimeUtils
.
getTodayTime
());
int
beforeNewMemberCount
=
Integer
.
parseInt
(
beforeAnalysis
.
getJSONObject
(
"result"
).
getString
(
"newMemberCount"
));
//新增会员数
float
beforeActualAmount
=
Float
.
parseFloat
(
beforeAnalysis
.
getJSONObject
(
"result"
).
getString
(
"actualAmount"
));
//签单实收金额
try
{
Thread
.
sleep
(
1000
);
}
catch
(
InterruptedException
e
)
{
throw
new
RuntimeException
(
e
);
}
//添加线索
String
name
=
"创建数据中心潜在会员"
+
RandomStringUtil
.
randomString
(
3
);
String
phone
=
RandomStringUtil
.
randomMobile
(
"999"
);
memberId
=
memberTools
.
create
(
name
,
phone
).
getString
(
"result"
);
//获取会员卡信息
//获取会员卡列表,没有则新建一个
int
cardTotal
=
Integer
.
parseInt
(
orderTools
.
fetchPageOfMemberCard
(
"次卡"
).
getJSONObject
(
"result"
).
getString
(
"total"
));
if
(
cardTotal
==
0
)
{
cardId
=
cardTools
.
memberCardCreate
(
"次卡-创建订单会员卡"
+
TimeUtils
.
getCurrentTime
()).
getString
(
"result"
);
}
JSONObject
memberCard
=
orderTools
.
fetchPageOfMemberCard
(
"次卡"
);
cardId
=
memberCard
.
getJSONObject
(
"result"
).
getJSONArray
(
"records"
).
getJSONObject
(
0
).
getString
(
"id"
);
BigDecimal
quantity
=
new
BigDecimal
(
memberCard
.
getJSONObject
(
"result"
).
getJSONArray
(
"records"
).
getJSONObject
(
0
).
getString
(
"balance"
));
float
price
=
Float
.
parseFloat
(
memberCard
.
getJSONObject
(
"result"
).
getJSONArray
(
"records"
).
getJSONObject
(
0
).
getString
(
"price"
));
int
validPeriod
=
Integer
.
parseInt
(
memberCard
.
getJSONObject
(
"result"
).
getJSONArray
(
"records"
).
getJSONObject
(
0
).
getString
(
"validPeriod"
));
try
{
Thread
.
sleep
(
1000
);
}
catch
(
InterruptedException
e
)
{
throw
new
RuntimeException
(
e
);
}
//获取签单要用的卡快照id
String
latestSnapshotId
=
orderTools
.
fetchDetailById
(
cardId
,
xmAppApi
.
getLoginInfo
().
getBrandId
(),
xmAppApi
.
getLoginInfo
().
getStudioId
(),
xmAppApi
.
getLoginInfo
().
getAdminId
()).
getJSONObject
(
"result"
).
getString
(
"latestSnapshotId"
);
try
{
Thread
.
sleep
(
1000
);
}
catch
(
InterruptedException
e
)
{
throw
new
RuntimeException
(
e
);
}
//检查会员对该卡是否超出购买上限
boolean
limitResult
=
orderTools
.
checkAllowPurchase
(
"MEMBER_CARD"
,
cardId
,
memberId
,
"1"
,
xmAppApi
.
getLoginInfo
().
getBrandId
(),
xmAppApi
.
getLoginInfo
().
getStudioId
(),
xmAppApi
.
getLoginInfo
().
getAdminId
()).
getBoolean
(
"success"
);
try
{
Thread
.
sleep
(
1000
);
}
catch
(
InterruptedException
e
)
{
throw
new
RuntimeException
(
e
);
}
if
(
limitResult
==
true
)
{
//创建订单
JSONObject
orderResult
=
orderTools
.
signOrder
(
cardId
,
latestSnapshotId
,
quantity
,
price
,
validPeriod
,
latestSnapshotId
,
price
/
2
,
"PURCHASE"
,
"MEMBER_CARD"
,
memberId
,
price
-
price
/
2
,
price
-
price
/
2
,
"1"
);
getDetailId
=
orderResult
.
getString
(
"result"
);
try
{
Thread
.
sleep
(
1000
);
}
catch
(
InterruptedException
e
)
{
throw
new
RuntimeException
(
e
);
}
//获取订单详情的实收金额
JSONObject
getDetailResult
=
orderTools
.
getDetail
(
getDetailId
);
paidAmount
=
Float
.
parseFloat
(
getDetailResult
.
getJSONObject
(
"result"
).
getString
(
"paidAmount"
));
//实收金额
}
JSONObject
analysis
=
new
JSONObject
();
analysis
.
put
(
"dateType"
,
"DAY"
);
analysis
.
put
(
"endTime"
,
TimeUtils
.
getTodayEndTime
());
analysis
.
put
(
"startTime"
,
TimeUtils
.
getTodayTime
());
analysis
.
put
(
"brandId"
,
xmAppApi
.
getLoginInfo
().
getBrandId
());
analysis
.
put
(
"studioId"
,
xmAppApi
.
getLoginInfo
().
getStudioId
());
analysis
.
put
(
"operatorId"
,
xmAppApi
.
getLoginInfo
().
getAdminId
());
xmAppApi
.
doRequest
(
RequestType
.
JSON
,
params
,
analysis
.
toJSONString
(),
headers
).
assetsSuccess
(
true
);
JSONObject
analysisResult
=
xmAppApi
.
getBodyInJSON
();
Assert
.
assertEquals
(
analysisResult
.
getString
(
"success"
),
"true"
,
"获取销售数据-数据分析-汇总失败"
);
int
newMemberCount
=
Integer
.
parseInt
(
analysisResult
.
getJSONObject
(
"result"
).
getString
(
"newMemberCount"
));
//新增会员数
float
actualAmount
=
Float
.
parseFloat
(
analysisResult
.
getJSONObject
(
"result"
).
getString
(
"actualAmount"
));
//签单实收金额
// BigDecimal qoqOfActualAmount=new BigDecimal(analysisResult.getJSONObject("result").getString("qoqOfActualAmount"));//签单实收金额环比
// BigDecimal qoqOfNewMemberCount=new BigDecimal(analysisResult.getJSONObject("result").getString("qoqOfNewMemberCount"));//新增会员数环比
// BigDecimal yoyOfActualAmount=new BigDecimal(analysisResult.getJSONObject("result").getString("yoyOfActualAmount"));//签单实收金额同比
// BigDecimal yoyOfNewMemberCount=new BigDecimal(analysisResult.getJSONObject("result").getString("yoyOfNewMemberCount"));//新增会员数同比
try
{
Thread
.
sleep
(
3000
);
}
catch
(
InterruptedException
e
)
{
throw
new
RuntimeException
(
e
);
}
//校验新增一个会员和签单之后销售数据-新增会员数与签单实收金额
Assert
.
assertEquals
(
newMemberCount
,
beforeNewMemberCount
+
1
,
"新建一个线索之后数据分析的新增会员数未加1"
);
Assert
.
assertEquals
(
actualAmount
,
beforeActualAmount
+
paidAmount
,
"签单完成之后,数据分析的签单实收金额未增加对应的签单实收金额"
);
// //获取新增会员数的趋势图
// JSONObject trendResult=salesDataTools.trend("DAY","NEW_MEMBER_COUNT",TimeUtils.getTodayEndTime(),TimeUtils.getTodayTime());
// String value=trendResult.getJSONArray("result").getJSONObject(0).getJSONArray("items").getJSONObject(0).getString("value");
// Assert.assertEquals(value,beforeNewMemberCount+1,"新建一个线索之后趋势图的新增会员数未加1");
}
}
src/main/java/com/xiaomai/cases/polar/data/salesData/TestTrend.java
0 → 100644
View file @
62526d54
package
com
.
xiaomai
.
cases
.
polar
.
data
.
salesData
;
import
com.alibaba.fastjson.JSONObject
;
import
com.xiaomai.enums.ApiModule
;
import
com.xiaomai.enums.LoginAccount
;
import
com.xiaomai.enums.RequestType
;
import
com.xiaomai.enums.Terminal
;
import
com.xiaomai.utils.TimeUtils
;
import
com.xiaomai.utils.XMBaseTest
;
import
org.testng.Assert
;
import
org.testng.annotations.BeforeMethod
;
import
org.testng.annotations.DataProvider
;
import
org.testng.annotations.Test
;
public
class
TestTrend
extends
XMBaseTest
{
@BeforeMethod
public
void
beforeTest
(){
xmAppApi
.
setApiModule
(
ApiModule
.
Polar_Data
)
.
setApiName
(
"API_saleDataTrend"
)
.
setLoginUser
(
LoginAccount
.
GYM_PROD
)
.
setTerminal
(
Terminal
.
B
);
dal
.
setCase_owner
(
"yff"
)
.
setCase_name
(
Thread
.
currentThread
().
getStackTrace
()[
1
].
getFileName
().
split
(
"\\."
)[
0
]);
super
.
beforeTest
();
}
@DataProvider
public
Object
[][]
dataProvider
(){
return
new
Object
[][]{
{
"DAY"
,
"NEW_MEMBER_COUNT"
,
TimeUtils
.
getTodayEndTime
(),
TimeUtils
.
getTodayTime
()},
//新增会员数,今天
{
"MONTH"
,
"SIGN_ORDER_ACTUAL_AMOUNT"
,
TimeUtils
.
getMonthLastDay
(),
TimeUtils
.
getMonthFristDay
()},
//新增会员数,本月
};
}
@Test
(
description
=
"销售数据-趋势图"
,
dataProvider
=
"dataProvider"
)
public
void
testTrend
(
String
dateType
,
String
metric
,
long
endTime
,
long
startTime
){
JSONObject
trend
=
new
JSONObject
();
trend
.
put
(
"dateType"
,
dateType
);
trend
.
put
(
"endTime"
,
endTime
);
trend
.
put
(
"startTime"
,
startTime
);
trend
.
put
(
"metric"
,
metric
);
trend
.
put
(
"brandId"
,
xmAppApi
.
getLoginInfo
().
getBrandId
());
trend
.
put
(
"studioId"
,
xmAppApi
.
getLoginInfo
().
getStudioId
());
trend
.
put
(
"operatorId"
,
xmAppApi
.
getLoginInfo
().
getAdminId
());
xmAppApi
.
doRequest
(
RequestType
.
JSON
,
params
,
trend
.
toJSONString
(),
headers
).
assetsSuccess
(
true
);
String
trendResult
=
xmAppApi
.
getBodyInJSON
().
getString
(
"success"
);
Assert
.
assertEquals
(
trendResult
,
"true"
,
"获取销售数据-趋势图失败"
);
}
@DataProvider
public
Object
[][]
dataProvider1
(){
return
new
Object
[][]{
{
"WEEK"
,
"NEW_MEMBER_COUNT"
,
TimeUtils
.
getWeekLastTime
(),
TimeUtils
.
getWeekFirstTime
()},
//签单实收金额,本周
};
}
@Test
(
description
=
"销售数据-趋势图"
,
dataProvider
=
"dataProvider1"
)
public
void
testTrend1
(
String
dateType
,
String
metric
,
String
endTime
,
String
startTime
){
JSONObject
trend
=
new
JSONObject
();
trend
.
put
(
"dateType"
,
dateType
);
trend
.
put
(
"endTime"
,
endTime
);
trend
.
put
(
"startTime"
,
startTime
);
trend
.
put
(
"metric"
,
metric
);
trend
.
put
(
"brandId"
,
xmAppApi
.
getLoginInfo
().
getBrandId
());
trend
.
put
(
"studioId"
,
xmAppApi
.
getLoginInfo
().
getStudioId
());
trend
.
put
(
"operatorId"
,
xmAppApi
.
getLoginInfo
().
getAdminId
());
xmAppApi
.
doRequest
(
RequestType
.
JSON
,
params
,
trend
.
toJSONString
(),
headers
).
assetsSuccess
(
true
);
String
trendResult
=
xmAppApi
.
getBodyInJSON
().
getString
(
"success"
);
Assert
.
assertEquals
(
trendResult
,
"true"
,
"获取销售数据-趋势图失败"
);
}
}
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