Arthur-Wu committed this file on 2024-11-25

This commit is contained in:
ieemoo
2024-11-25 17:53:55 +08:00
parent 0cf0c9d8f7
commit 1fd2bf9c4e
23 changed files with 564 additions and 278 deletions
@@ -1,5 +0,0 @@
# !/usr/bin/python
# -*- coding: utf-8 -*-
# @Author:: Arthur Wu
# @Description:: 会员登录,领取优惠券
# @Date:: 2024/11/21
+17 -6
View File
@@ -104,7 +104,7 @@ class YMClientApi(object):
logging.info(f"-----------接口返回数据:{response.json()}\n\n") logging.info(f"-----------接口返回数据:{response.json()}\n\n")
return response.json() return response.json()
def delete_cart_goods(self, GetGoodsInfoList, LoginData, AddGoodsResp): def delete_cart_goods(self, GetGoodsInfoList, LoginData, AddGoodsRespList):
''' 退购 商品 ''' 退购 商品
:param GetGoodsInfoList: :param GetGoodsInfoList:
:param LoginData: :param LoginData:
@@ -114,7 +114,9 @@ class YMClientApi(object):
import random import random
logging.info("========== [退购 商品] delete_cart_goods ==========") logging.info("========== [退购 商品] delete_cart_goods ==========")
delGoodsList, existGoodsList = [], [] delGoodsList, existGoodsList = [], []
for add_goods_info in AddGoodsResp["data"]["orderItemList"]: for add_goods_resp in AddGoodsRespList:
# for add_goods_info in AddGoodsResp["data"]["orderItemList"]:
add_goods_info = add_goods_resp["data"]["orderItemList"][0]
exist_goods_dict = {} exist_goods_dict = {}
exist_goods_dict["inputCode"] = add_goods_info["inputCode"] exist_goods_dict["inputCode"] = add_goods_info["inputCode"]
exist_goods_dict["isNormalAddPurchase"] = True exist_goods_dict["isNormalAddPurchase"] = True
@@ -130,6 +132,12 @@ class YMClientApi(object):
existGoodsList.append(exist_goods_dict) existGoodsList.append(exist_goods_dict)
del_goods_dict = {} del_goods_dict = {}
delGoodsInfo = {
"inputCode": "",
"isNormalAddPurchase": True,
"qty": 1,
"weight": 0,
}
delGoodsInfo = random.choice(GetGoodsInfoList) delGoodsInfo = random.choice(GetGoodsInfoList)
del_goods_dict["inputCode"] = delGoodsInfo["data"]["inputCode"] del_goods_dict["inputCode"] = delGoodsInfo["data"]["inputCode"]
del_goods_dict["isNormalAddPurchase"] = True del_goods_dict["isNormalAddPurchase"] = True
@@ -148,11 +156,13 @@ class YMClientApi(object):
"existGoods": existGoodsList, "existGoods": existGoodsList,
"orderNo": LoginData["data"][0]["orderNo"] "orderNo": LoginData["data"][0]["orderNo"]
}) })
logging.info(f"-----------退购商品请求体为:{payload}\n")
url = self.Domain + "/v2/shopping/add/retire/purchase" url = self.Domain + "/v2/shopping/add/retire/purchase"
response = requests.request("POST", url, headers=self.headerss, data=payload) response = requests.request("POST", url, headers=self.headerss, data=payload)
logging.info(f"-----------接口返回状态码:{response.status_code}") logging.info(f"-----------接口返回状态码:{response.status_code}")
logging.info(f"-----------接口返回数据:{response.json()}\n\n") logging.info(f"-----------接口返回数据:{response.json()}\n\n")
return response.json() if response.json()["msg"] == '成功':
return json.loads(payload)
def delete_shopping_bag(self, GetGoodsInfoList, LoginData, AddGoodsResp): def delete_shopping_bag(self, GetGoodsInfoList, LoginData, AddGoodsResp):
''' 退购 购物嗲 ''' 退购 购物嗲
@@ -240,14 +250,14 @@ class YMClientApi(object):
def get_cart_goods_info(self, GoodsDataList): def get_cart_goods_info(self, GoodsDataList):
logging.info("========== [获取购物车商品信息] get_cart_goods_info ==========") logging.info("========== [获取购物车商品信息] get_cart_goods_info ==========")
goods_param_lList = [] goods_param_list = []
for goods_data in GoodsDataList: for goods_data in GoodsDataList:
goods_dict = {} goods_dict = {}
goods_dict["inputCode"] = goods_data["data"]["inputCode"] goods_dict["inputCode"] = goods_data["data"]["inputCode"]
goods_dict["qty"] = int(float((goods_data["data"]["qty"]))) goods_dict["qty"] = int(float((goods_data["data"]["qty"])))
goods_dict["weight"] = int(goods_data["data"]["weight"]) goods_dict["weight"] = int(goods_data["data"]["weight"])
goods_param_lList.append(goods_dict) goods_param_list.append(goods_dict)
payload = json.dumps({"goodsParamList": goods_param_lList}, indent=4, ensure_ascii=False) payload = json.dumps({"goodsParamList": goods_param_list}, indent=4, ensure_ascii=False)
logging.info(f"-----------请求体为:{payload}") logging.info(f"-----------请求体为:{payload}")
url = self.Domain+"/v2/shopping/cart/goods/info" url = self.Domain+"/v2/shopping/cart/goods/info"
response = requests.request("POST", url, headers=self.headerss, data=payload) response = requests.request("POST", url, headers=self.headerss, data=payload)
@@ -295,6 +305,7 @@ if __name__ == '__main__':
ymc.login_app_v2(Payload02) # step4:切换会员登录 ymc.login_app_v2(Payload02) # step4:切换会员登录
GoodsInfoData = ymc.get_goods_info(InputCode=6924882486100) # step5:获取商品信息 ------ 6924882486100 GoodsInfoData = ymc.get_goods_info(InputCode=6924882486100) # step5:获取商品信息 ------ 6924882486100
CouponListData = ymc.get_coupon_list() # step6:获取优惠券列表 CouponListData = ymc.get_coupon_list() # step6:获取优惠券列表
ymc.receive_coupon(CouponListData) # step7:领取优惠券 ymc.receive_coupon(CouponListData) # step7:领取优惠券
ymc.query_coupon_list_user() # step8:查询用户持有的优惠券列表 ymc.query_coupon_list_user() # step8:查询用户持有的优惠券列表
+40 -1
View File
@@ -110,6 +110,40 @@ class YMServiceApi(object):
logging.info(f"---接口返回状态码为:: {response.status_code}") logging.info(f"---接口返回状态码为:: {response.status_code}")
logging.info(f"---接口返回体为:: {response.json()}\n\n") logging.info(f"---接口返回体为:: {response.json()}\n\n")
def update_cart_info(self, NewStoreInfo):
'''
NewStoreInfo={
"CartMac": "b8:2d:28:04:c7:5c",
"StoreId": 69,
}
购物车MAC地址:"mac": "b8:2d:28:04:c7:5c",
亿猫超市-国秀广场:"storeId": 9017,
武商-梦时代:"storeId": 69,
家家悦-青岛乐客:"storeId": 9022,
中百-中百测试店:"storeId": 68,
永辉-龙湖天街:"storeId": 9010,
:param NewStoreInfo:
:return:
'''
logging.info("========== [更新购物车信息] ==========")
payload = json.dumps({
"id": 1213,
"mac": NewStoreInfo["CartMac"], #
"storeId": NewStoreInfo["StoreId"],
"cartModelId": 5,
"serialNum": "MMAT3FC10100003101023491",
"storeCartNo": "QH97",
"rfid": "0104e26401440143010000001",
"status": 1,
"motherboardType": "3568",
"activationDate": "2024-08-01"
})
url = self.Domain + "admin/cart/1213"
response = requests.request("PUT", url, headers=self.headerss, data=payload)
logging.info(f"-----------接口返回状态码:{response.status_code}")
logging.info(f"-----------接口返回数据:{response.json()}\n\n")
return response.json()
def approved_abnormal_products(self, MarketAndStoreInfo): def approved_abnormal_products(self, MarketAndStoreInfo):
logging.info("========== [审核通过异常商品] ==========") logging.info("========== [审核通过异常商品] ==========")
auth_token_b = self.headerss["Authorization"] auth_token_b = self.headerss["Authorization"]
@@ -198,4 +232,9 @@ if __name__ == '__main__':
yms = YMServiceApi() yms = YMServiceApi()
GoodsInfo = {"GoodsInputcode": "6924743915848"} GoodsInfo = {"GoodsInputcode": "6924743915848"}
MarketAndStoreDetails = {"putMarketId": 50, "putStoreId": ["69"]} MarketAndStoreDetails = {"putMarketId": 50, "putStoreId": ["69"]}
yms.approved_abnormal_products(MarketAndStoreDetails)
NewStoreInfo = {
"CartMac": "b8:2d:28:04:c7:5c",
"StoreId": 68,
}
yms.update_cart_info(NewStoreInfo)
+59
View File
@@ -0,0 +1,59 @@
# which is the data file for Wu Shang.
#adsAreaId-1: 登录页广告
#adsAreaId-2: 登录后弹窗广告
#adsAreaId-3: 购物车主页广告
#adsAreaId-4: 待机广告
#adsAreaId-5: 扫码广告
#adsAreaId-6: 支付后广告
#adsAreaId-7: 小票广告
# 1-购物车Mac地址
ShoppingCartMac: b8:2d:28:04:c7:5c
# 2-武商会员账号
VIPPhoneNumber: 17786408673
# 3--商超、门店信息
MarketAndStoreDetails:
putMarketId: 50
putStoreId: ["69"]
# 4--购物袋
ShoppingBag:
mid: 6971648922990
max: 6971648922983
# 5-原件商品
NormalGoods:
goods01: 6925791908202
goods02: 6925303796426
goods03: 6924743915848
# 6-优惠商品
VipGoods:
goods01: 6922024730036
goods02: 4897114790479
goods03: 4820193033335
# 7-折扣商品
SaleGoods:
goods01: 9588856298051
# 8-促销白名单商品
PromotionalWhitelistGoods:
GoodsInputcode: 9588856298051
GoodsName: 濠品轩燕麦酥
# 9-重量放通白名单商品
WeightToWhitelistGoods:
GoodsInputcode: 6922024730036
GoodsName: 大白兔奶糖
# 10-散称计重商品
MisspellingWeightGoods:
GoodsInputcode: 2934431009517
GoodsName: 阿克苏苹果
# 11-计件商品
PieceRateGoods:
GoodsInputcode: 2910551005806
GoodsName: 优选大白菜秧
+52
View File
@@ -0,0 +1,52 @@
# which is the data file for Wu Shang.
# 1-购物车Mac地址
ShoppingCartMac: b8:2d:28:04:c7:5c
# 2-武商会员账号
VIPPhoneNumber:
# 3--商超、门店信息
MarketAndStoreDetails:
putMarketId: 50
putStoreId: ["69"]
# 4--购物袋
ShoppingBag:
mid:
max:
# 5-原件商品
NormalGoods:
goods01:
goods02:
goods03:
# 6-优惠商品
VipGoods:
goods01:
goods02:
goods03:
# 7-折扣商品
SaleGoods:
goods01:
# 8-促销白名单商品
PromotionalWhitelistGoods:
GoodsInputcode:
GoodsName:
# 9-重量放通白名单商品
WeightToWhitelistGoods:
GoodsInputcode:
GoodsName:
# 10-散称计重商品
MisspellingWeightGoods:
GoodsInputcode:
GoodsName:
# 11-计件商品
PieceRateGoods:
GoodsInputcode:
GoodsName:
+55
View File
@@ -0,0 +1,55 @@
# which is the data file for Wu Shang.
# 1-购物车Mac地址
ShoppingCartMac: b8:2d:28:04:c7:5c
# 2-武商会员账号
VIPPhoneNumber: 13237135934
# 3-商超、门店信息
MarketAndStoreDetails:
putMarketId: 10016
putStoreId: ["68"]
# 4-购物袋
ShoppingBag:
mid: 6942246202623
max: 6942246202616
# 5-原件商品
NormalGoods:
goods01: 6972567330071 # 小萌牛泡泡相机
goods02: 6972790050364 # 酷滋枇杷软糖36g
goods03: 6972462651462 # 罗兰小汤勺
# 6-优惠商品
VipGoods:
goods01: 6924187839281
goods02: 6924187839243
goods03:
# 7-折扣商品
SaleGoods:
goods01: 6924187839243
# 8-促销白名单商品
PromotionalWhitelistGoods:
GoodsInputcode: 6972790050364
GoodsName: 酷滋枇杷软糖36g
# 9-重量放通白名单商品
WeightToWhitelistGoods:
GoodsInputcode: 6972462651462
GoodsName: 罗兰小汤勺
# 10-散称计重商品
# 250633900250000013 玉如意绿豆芽
# 262810902376001203 木兰湖农养鸡蛋
MisspellingWeightGoods:
GoodsInputcode: 250633900250000013
GoodsName: 玉如意绿豆芽
# 11-计件商品
PieceRateGoods:
GoodsInputcode:
GoodsName:
@@ -3,13 +3,12 @@
# @Author:: Arthur Wu # @Author:: Arthur Wu
# @Date:: 2024/11/18-9:38 # @Date:: 2024/11/18-9:38
# @Description:: # @Description::
import unittest,allure,time,pytest import unittest,allure,time,pytest,ddt
from configs.globalObj import LOGGER from configs.globalParams import DataInit
from YiMao.businessFunc.ClientApiLib import YMClientApi from YiMao.businessFunc.ClientApiLib import YMClientApi
from YiMao.data.WuShangSceneTestData import *
DescName = "Anon001-非会员加购购物袋并试算" DescName = "Anon001-非会员加购购物袋并试算"
@ddt.ddt
@allure.story(f'[场景测试] {DescName}验证') @allure.story(f'[场景测试] {DescName}验证')
class Test_CAnon001_AddShoppingBagAndSettlePayment(unittest.TestCase): class Test_CAnon001_AddShoppingBagAndSettlePayment(unittest.TestCase):
f'''@Date:: 2024/11/15 f'''@Date:: 2024/11/15
@@ -19,51 +18,51 @@ class Test_CAnon001_AddShoppingBagAndSettlePayment(unittest.TestCase):
1、武商测试环境,购物袋inputcode为: 1、武商测试环境,购物袋inputcode为:
6971648922990、6971648922983 6971648922990、6971648922983
''' '''
def setUp(self) -> None: @ddt.data(*DataInit)
self.timestamp = int(time.time()) def test_CAnon00101_AddMidShoppingbagsForPurchase(self, data):
self.ymc = YMClientApi(ShoppingCartMac)
self.goodsbag_mid = GoodsBagInputcode_mid
self.goodsbag_max = GoodsBagInputcode_max
def test_CAnon00101_AddMidShoppingbagsForPurchase(self):
allure.dynamic.description(f"描述:加购中号购物袋") allure.dynamic.description(f"描述:加购中号购物袋")
allure.step("步骤1session开始") ymc = YMClientApi(data["ShoppingCartMac"])
self.ymc.session_start() goodsbag_mid = data["ShoppingBag"]["mid"]
allure.step("步骤2:匿名登录")
Payload01 = {"action": 0, "isAnon": True}
LoginData = self.ymc.login_app_v2(Payload01)
allure.step("步骤3:获取商品信息")
GoodsInfoData = self.ymc.get_goods_info(self.goodsbag_mid)
if GoodsInfoData['msg'] != '加购商品不存在':
allure.step("步骤4:添加购物袋")
self.ymc.add_cart_goods(GoodsInfoData, 2, LoginData)
allure.step("步骤5:获取购物车商品信息")
self.ymc.get_cart_goods_info([GoodsInfoData])
allure.step("步骤6:请求订单结算")
self.ymc.request_order_settlement(LoginData)
else:
LOGGER.info(f"---购物袋 {self.goodsbag_mid} 不存在")
pytest.fail(f"购物袋 {self.goodsbag_mid} 不存在")
def test_CAnon00102_AddMaxShoppingbagsForPurchase(self):
allure.dynamic.description("描述:加购大号购物袋")
allure.step("步骤1session开始") allure.step("步骤1session开始")
self.ymc.session_start() ymc.session_start()
allure.step("步骤2:匿名登录") allure.step("步骤2:匿名登录")
Payload01 = {"action": 0, "isAnon": True} Payload01 = {"action": 0, "isAnon": True}
LoginData = self.ymc.login_app_v2(Payload01) LoginData = ymc.login_app_v2(Payload01)
allure.step("步骤3:获取商品信息") allure.step("步骤3:获取商品信息")
GoodsInfoData = self.ymc.get_goods_info(self.goodsbag_max) GoodsInfoData = ymc.get_goods_info(goodsbag_mid)
if GoodsInfoData['msg'] != '加购商品不存在': if GoodsInfoData['msg'] != '加购商品不存在':
allure.step("步骤4:添加购物袋") allure.step("步骤4:添加购物袋")
self.ymc.add_cart_goods(GoodsInfoData, 2, LoginData) ymc.add_cart_goods(GoodsInfoData, 2, LoginData)
allure.step("步骤5:获取购物车商品信息") allure.step("步骤5:获取购物车商品信息")
self.ymc.get_cart_goods_info([GoodsInfoData]) ymc.get_cart_goods_info([GoodsInfoData])
allure.step("步骤6:请求订单结算") allure.step("步骤6:请求订单结算")
self.ymc.request_order_settlement(LoginData) ymc.request_order_settlement(LoginData)
else: else:
LOGGER.info(f"---购物袋 {self.goodsbag_max} 不存在") pytest.fail(f"购物袋 {goodsbag_mid} 不存在")
pytest.fail(f"购物袋 {self.goodsbag_mid} 不存在")
@ddt.data(*DataInit)
def test_CAnon00102_AddMaxShoppingbagsForPurchase(self, data):
allure.dynamic.description("描述:加购大号购物袋")
ymc = YMClientApi(data["ShoppingCartMac"])
goodsbag_max = data["ShoppingBag"]["max"]
allure.step("步骤1session开始")
ymc.session_start()
allure.step("步骤2:匿名登录")
Payload01 = {"action": 0, "isAnon": True}
LoginData = ymc.login_app_v2(Payload01)
allure.step("步骤3:获取商品信息")
GoodsInfoData = ymc.get_goods_info(goodsbag_max)
if GoodsInfoData['msg'] != '加购商品不存在':
allure.step("步骤4:添加购物袋")
ymc.add_cart_goods(GoodsInfoData, 2, LoginData)
allure.step("步骤5:获取购物车商品信息")
ymc.get_cart_goods_info([GoodsInfoData])
allure.step("步骤6:请求订单结算")
ymc.request_order_settlement(LoginData)
else:
pytest.fail(f"购物袋 {goodsbag_max} 不存在")
if __name__ == '__main__': if __name__ == '__main__':
@@ -3,13 +3,12 @@
# @Author:: Arthur Wu # @Author:: Arthur Wu
# @Date:: 2024/11/18-10:49 # @Date:: 2024/11/18-10:49
# @Description:: 游客登录,加购无优惠普通商品并结算 # @Description:: 游客登录,加购无优惠普通商品并结算
import unittest,allure,time,pytest import unittest,allure,time,pytest,ddt
from configs.globalObj import LOGGER
from YiMao.businessFunc.ClientApiLib import YMClientApi from YiMao.businessFunc.ClientApiLib import YMClientApi
from YiMao.data.WuShangSceneTestData import * from configs.globalParams import DataInit
DescName = "Anon002-非会员加购无优惠商品并试算" DescName = "Anon002-非会员加购无优惠商品并试算"
@ddt.ddt
@allure.story(f'[场景测试] {DescName}验证') @allure.story(f'[场景测试] {DescName}验证')
class Test_CAnon002(unittest.TestCase): class Test_CAnon002(unittest.TestCase):
f'''@Date:: 2024/11/15 f'''@Date:: 2024/11/15
@@ -19,30 +18,28 @@ class Test_CAnon002(unittest.TestCase):
1、武商测试环境,普通无优惠商品inputcode为: 1、武商测试环境,普通无优惠商品inputcode为:
6924743915848 6924743915848
''' '''
def setUp(self) -> None: @ddt.data(*DataInit)
self.timestamp = int(time.time()) def test_CAnon002_AddNonDiscountedProductsForPurchase(self, data):
self.ymc = YMClientApi(ShoppingCartMac)
self.NormalGoodsInputcode01 = NormalGoodsInputcode01
def test_CAnon002_AddNonDiscountedProductsForPurchase(self):
allure.dynamic.description(f"描述:{DescName}") allure.dynamic.description(f"描述:{DescName}")
ymc = YMClientApi(data["ShoppingCartMac"])
NormalGoodsInputcode01 = data["NormalGoods"]["goods01"]
allure.step("步骤1session开始") allure.step("步骤1session开始")
self.ymc.session_start() ymc.session_start()
allure.step("步骤2:匿名登录") allure.step("步骤2:匿名登录")
Payload01 = {"action": 0, "isAnon": True} Payload01 = {"action": 0, "isAnon": True}
LoginData = self.ymc.login_app_v2(Payload01) LoginData = ymc.login_app_v2(Payload01)
allure.step("步骤3:获取商品信息") allure.step("步骤3:获取商品信息")
GoodsInfoData = self.ymc.get_goods_info(InputCode=self.NormalGoodsInputcode01) GoodsInfoData = ymc.get_goods_info(InputCode=NormalGoodsInputcode01)
if GoodsInfoData['msg'] != '加购商品不存在': if GoodsInfoData['msg'] != '加购商品不存在':
allure.step("步骤4:添加无优惠商品") allure.step("步骤4:添加无优惠商品")
self.ymc.add_cart_goods(GoodsInfoData, 5, LoginData) ymc.add_cart_goods(GoodsInfoData, 5, LoginData)
allure.step("步骤5:获取购物车商品信息") allure.step("步骤5:获取购物车商品信息")
self.ymc.get_cart_goods_info([GoodsInfoData]) ymc.get_cart_goods_info([GoodsInfoData])
allure.step("步骤6:请求订单结算") allure.step("步骤6:请求订单结算")
self.ymc.request_order_settlement(LoginData) ymc.request_order_settlement(LoginData)
else: else:
LOGGER.info(f"---商品 {self.NormalGoodsInputcode01} 不存在") pytest.fail(f"商品 {NormalGoodsInputcode01} 不存在")
pytest.fail(f"商品 {self.NormalGoodsInputcode01} 不存在")
if __name__ == '__main__': if __name__ == '__main__':
@@ -3,46 +3,41 @@
# @Author:: Arthur Wu # @Author:: Arthur Wu
# @Description:: 游客登录,加购会员商品并结算 # @Description:: 游客登录,加购会员商品并结算
# @Date:: 2021-05-10 16:30:23 # @Date:: 2021-05-10 16:30:23
import unittest,allure,time,pytest import unittest,allure,time,pytest,ddt
from configs.globalObj import LOGGER
from YiMao.businessFunc.ClientApiLib import YMClientApi from YiMao.businessFunc.ClientApiLib import YMClientApi
from YiMao.data.WuShangSceneTestData import * from configs.globalParams import DataInit
DescName = "Anon003-非会员加购会员商品并结算" DescName = "Anon003-非会员加购会员商品并结算"
@ddt.ddt
@allure.story(f'[场景测试] {DescName}验证') @allure.story(f'[场景测试] {DescName}验证')
class Test_CAnon003(unittest.TestCase): class Test_CAnon003(unittest.TestCase):
f'''@Date:: 2024/11/15 f'''@Date:: 2024/11/15
@Author:: Arthur Wu @Author:: Arthur Wu
@Desc:: @Desc::
[购物车客户端] {DescName} [购物车客户端] {DescName}
1、武商测试环境,会员有优惠商品inputcode为:
!!!!会员有优惠商品暂未提供
''' '''
def setUp(self) -> None: @ddt.data(*DataInit)
self.timestamp = int(time.time()) def test_CAnon003_AddMemberProductsForPurchase(self, data):
self.ymc = YMClientApi(ShoppingCartMac)
self.vip_goods_inputcode = VipGoodsInputcode
def test_CAnon003_AddMemberProductsForPurchase(self):
allure.dynamic.description(f"描述:{DescName}") allure.dynamic.description(f"描述:{DescName}")
ymc = YMClientApi(data["ShoppingCartMac"])
vip_goods_inputcode = data["VipGoods"]["goods01"]
allure.step("步骤1session开始") allure.step("步骤1session开始")
self.ymc.session_start() ymc.session_start()
allure.step("步骤2:匿名登录") allure.step("步骤2:匿名登录")
Payload01 = {"action": 0, "isAnon": True} Payload01 = {"action": 0, "isAnon": True}
LoginData = self.ymc.login_app_v2(Payload01) LoginData = ymc.login_app_v2(Payload01)
allure.step("步骤3:获取商品信息") allure.step("步骤3:获取商品信息")
GoodsInfoData = self.ymc.get_goods_info(self.vip_goods_inputcode) GoodsInfoData = ymc.get_goods_info(vip_goods_inputcode)
if GoodsInfoData['msg'] != '加购商品不存在': if GoodsInfoData['msg'] != '加购商品不存在':
allure.step("步骤4:添加会员有优惠商品") allure.step("步骤4:添加会员有优惠商品")
self.ymc.add_cart_goods(GoodsInfoData, 1, LoginData) ymc.add_cart_goods(GoodsInfoData, 1, LoginData)
allure.step("步骤5:获取购物车商品信息") allure.step("步骤5:获取购物车商品信息")
self.ymc.get_cart_goods_info([GoodsInfoData]) ymc.get_cart_goods_info([GoodsInfoData])
allure.step("步骤6:请求订单结算") allure.step("步骤6:请求订单结算")
self.ymc.request_order_settlement(LoginData) ymc.request_order_settlement(LoginData)
else: else:
LOGGER.info(f"---商品 {self.vip_goods_inputcode} 不存在") pytest.fail(f"商品 {vip_goods_inputcode} 不存在")
pytest.fail(f"商品 {self.vip_goods_inputcode} 不存在")
if __name__ == '__main__': if __name__ == '__main__':
@@ -3,13 +3,12 @@
# @Author:: Arthur Wu # @Author:: Arthur Wu
# @Description:: 游客登录,加购多件商品并结算 # @Description:: 游客登录,加购多件商品并结算
# @Date:: 2021-05-10 16:30:23 # @Date:: 2021-05-10 16:30:23
import unittest,allure,time,pytest import unittest,allure,time,pytest,ddt
from configs.globalObj import LOGGER
from YiMao.businessFunc.ClientApiLib import YMClientApi from YiMao.businessFunc.ClientApiLib import YMClientApi
from YiMao.data.WuShangSceneTestData import * from configs.globalParams import DataInit
DescName = "Anon004-非会员加购多件商品并结算" DescName = "Anon004-非会员加购多件商品并结算"
@ddt.ddt
@allure.story(f'[场景测试] {DescName}验证') @allure.story(f'[场景测试] {DescName}验证')
class Test_CAnon004(unittest.TestCase): class Test_CAnon004(unittest.TestCase):
f'''@Date:: 2024/11/15 f'''@Date:: 2024/11/15
@@ -18,39 +17,36 @@ class Test_CAnon004(unittest.TestCase):
[购物车客户端] {DescName} [购物车客户端] {DescName}
1、武商测试环境,多件商品的 inputcode 分别为: 1、武商测试环境,多件商品的 inputcode 分别为:
''' '''
def setUp(self) -> None: @ddt.data(*DataInit)
self.timestamp = int(time.time()) def test_CAnon004_AddMultipleItemsForPurchase(self, data):
self.ymc = YMClientApi(ShoppingCartMac)
self.goods_inputcode1 = NormalGoodsInputcode01
self.goods_inputcode2 = NormalGoodsInputcode02
def test_CAnon004_AddMultipleItemsForPurchase(self):
allure.dynamic.description(f"描述:{DescName}") allure.dynamic.description(f"描述:{DescName}")
ymc = YMClientApi(data["ShoppingCartMac"])
goods_inputcode1 = data["NormalGoods"]["goods01"]
goods_inputcode2 = data["NormalGoods"]["goods02"]
allure.step("步骤1session开始") allure.step("步骤1session开始")
self.ymc.session_start() ymc.session_start()
allure.step("步骤2:匿名登录") allure.step("步骤2:匿名登录")
Payload01 = {"action": 0, "isAnon": True} Payload01 = {"action": 0, "isAnon": True}
LoginData = self.ymc.login_app_v2(Payload01) LoginData = ymc.login_app_v2(Payload01)
allure.step("步骤3:获取商品1信息") allure.step("步骤3:获取商品1信息")
GoodsInfoData1 = self.ymc.get_goods_info(InputCode=self.goods_inputcode1) GoodsInfoData1 = ymc.get_goods_info(InputCode=goods_inputcode1)
if GoodsInfoData1['msg'] != '加购商品不存在': if GoodsInfoData1['msg'] != '加购商品不存在':
allure.step("步骤4:添加商品1") allure.step("步骤4:添加商品1")
self.ymc.add_cart_goods(GoodsInfoData1, 1, LoginData) ymc.add_cart_goods(GoodsInfoData1, 1, LoginData)
allure.step("步骤5:获取商品2信息") allure.step("步骤5:获取商品2信息")
GoodsInfoData2 = self.ymc.get_goods_info(InputCode=self.goods_inputcode2) GoodsInfoData2 = ymc.get_goods_info(InputCode=goods_inputcode2)
if GoodsInfoData2['msg'] != '加购商品不存在': if GoodsInfoData2['msg'] != '加购商品不存在':
allure.step("步骤6:添加商品2") allure.step("步骤6:添加商品2")
self.ymc.add_cart_goods(GoodsInfoData2, 1, LoginData) ymc.add_cart_goods(GoodsInfoData2, 1, LoginData)
allure.step("步骤7:获取购物车商品信息") allure.step("步骤7:获取购物车商品信息")
self.ymc.get_cart_goods_info([GoodsInfoData1, GoodsInfoData2]) ymc.get_cart_goods_info([GoodsInfoData1, GoodsInfoData2])
allure.step("步骤8:请求订单结算") allure.step("步骤8:请求订单结算")
self.ymc.request_order_settlement(LoginData) ymc.request_order_settlement(LoginData)
else: else:
LOGGER.info(f"---商品 {self.goods_inputcode2} 不存在") pytest.fail(f"商品 {goods_inputcode2} 不存在")
pytest.fail(f"商品 {self.goods_inputcode2} 不存在")
else: else:
LOGGER.info(f"---商品 {self.goods_inputcode1} 不存在") pytest.fail(f"商品 {goods_inputcode1} 不存在")
pytest.fail(f"商品 {self.goods_inputcode1} 不存在")
if __name__ == '__main__': if __name__ == '__main__':
@@ -3,13 +3,12 @@
# @Author:: Arthur Wu # @Author:: Arthur Wu
# @Description:: 游客登录,加购打折商品并结算 # @Description:: 游客登录,加购打折商品并结算
# @Date:: 2021-05-10 16:30:22 # @Date:: 2021-05-10 16:30:22
import unittest,allure,time,pytest import unittest,allure,time,pytest,ddt
from configs.globalObj import LOGGER
from YiMao.businessFunc.ClientApiLib import YMClientApi from YiMao.businessFunc.ClientApiLib import YMClientApi
from YiMao.data.WuShangSceneTestData import * from configs.globalParams import DataInit
DescName = "Anon005-非会员加购打折商品并结算" DescName = "Anon005-非会员加购打折商品并结算"
@ddt.ddt
@allure.story(f'[场景测试] {DescName}验证') @allure.story(f'[场景测试] {DescName}验证')
class Test_CAnon005(unittest.TestCase): class Test_CAnon005(unittest.TestCase):
f'''@Date:: 2024/11/15 f'''@Date:: 2024/11/15
@@ -19,30 +18,28 @@ class Test_CAnon005(unittest.TestCase):
1、武商测试环境,会员有优惠商品inputcode为: 1、武商测试环境,会员有优惠商品inputcode为:
!!!!折扣商品暂未提供 !!!!折扣商品暂未提供
''' '''
def setUp(self) -> None: @ddt.data(*DataInit)
self.timestamp = int(time.time()) def test_CAnon005_AddDiscountedProductsForPurchase(self, data):
self.ymc = YMClientApi(ShoppingCartMac)
self.sale_goods_inputCode = SaleGoodsInputCode
def test_CAnon005_AddDiscountedProductsForPurchase(self):
allure.dynamic.description(f"描述:{DescName}") allure.dynamic.description(f"描述:{DescName}")
ymc = YMClientApi(data["ShoppingCartMac"])
sale_goods_inputCode = data["SaleGoods"]["goods01"]
allure.step("步骤1session开始") allure.step("步骤1session开始")
self.ymc.session_start() ymc.session_start()
allure.step("步骤2:匿名登录") allure.step("步骤2:匿名登录")
Payload01 = {"action": 0, "isAnon": True} Payload01 = {"action": 0, "isAnon": True}
LoginData = self.ymc.login_app_v2(Payload01) LoginData = ymc.login_app_v2(Payload01)
allure.step("步骤3:获取折扣商品信息") allure.step("步骤3:获取折扣商品信息")
GoodsInfoData = self.ymc.get_goods_info(InputCode=self.sale_goods_inputCode) GoodsInfoData = ymc.get_goods_info(InputCode=sale_goods_inputCode)
if GoodsInfoData['msg'] != '加购商品不存在': if GoodsInfoData['msg'] != '加购商品不存在':
allure.step("步骤4:加购折扣商品") allure.step("步骤4:加购折扣商品")
self.ymc.add_cart_goods(GoodsInfoData, 1, LoginData) ymc.add_cart_goods(GoodsInfoData, 1, LoginData)
allure.step("步骤5:获取购物车商品信息") allure.step("步骤5:获取购物车商品信息")
self.ymc.get_cart_goods_info([GoodsInfoData]) ymc.get_cart_goods_info([GoodsInfoData])
allure.step("步骤6:请求订单结算") allure.step("步骤6:请求订单结算")
self.ymc.request_order_settlement(LoginData) ymc.request_order_settlement(LoginData)
else: else:
LOGGER.info(f"---商品 {self.sale_goods_inputCode} 不存在") pytest.fail(f"---商品 {sale_goods_inputCode} 不存在")
pytest.fail(f"---商品 {self.sale_goods_inputCode} 不存在")
if __name__ == '__main__': if __name__ == '__main__':
@@ -3,14 +3,13 @@
# @Author:: Arthur Wu # @Author:: Arthur Wu
# @Description:: 游客登录,加购促销白名单商品并结算 # @Description:: 游客登录,加购促销白名单商品并结算
# @Date:: 2021-05-10 16:30:23 # @Date:: 2021-05-10 16:30:23
import unittest,allure,time,pytest import unittest,allure,time,pytest,ddt
from configs.globalObj import LOGGER
from YiMao.businessFunc.ClientApiLib import YMClientApi from YiMao.businessFunc.ClientApiLib import YMClientApi
from YiMao.businessFunc.ServiceApiLib import YMServiceApi from YiMao.businessFunc.ServiceApiLib import YMServiceApi
from YiMao.data.WuShangSceneTestData import * from configs.globalParams import DataInit
DescName = "Anon006-非会员加购促销白名单商品并结算" DescName = "Anon006-非会员加购促销白名单商品并结算"
@ddt.ddt
@allure.story(f'[场景测试] {DescName}验证') @allure.story(f'[场景测试] {DescName}验证')
class Test_CAnon006(unittest.TestCase): class Test_CAnon006(unittest.TestCase):
f'''@Date:: 2024/11/15 f'''@Date:: 2024/11/15
@@ -20,50 +19,45 @@ class Test_CAnon006(unittest.TestCase):
1、武商测试环境,促销白名单商品inputcode为: 1、武商测试环境,促销白名单商品inputcode为:
6925303796426 6925303796426
''' '''
def setUp(self) -> None: @ddt.data(*DataInit)
self.timestamp = int(time.time()) def test_CAnon006_AddPromotionalWhitelistProducts(self, data):
self.ymc = YMClientApi(ShoppingCartMac) allure.dynamic.description(f"描述:{DescName}")
self.yms = YMServiceApi() ymc = YMClientApi(data["ShoppingCartMac"])
self.promotional_whitelist_goods = PromotionalWhitelistGoods yms = YMServiceApi()
self.market_and_store_info = { promotional_whitelist_goods = data["PromotionalWhitelistGoods"]
"MarketId": MarketAndStoreDetails["putMarketId"], market_and_store_info = {
"StoreId": MarketAndStoreDetails["putStoreId"][0] "MarketId": data["MarketAndStoreDetails"]['putMarketId'],
"StoreId": data["MarketAndStoreDetails"]['putStoreId'][0]
} }
def test_CAnon006_AddPromotionalWhitelistProducts(self):
allure.dynamic.description(f"描述:{DescName}")
allure.step("[前置条件]:先调用管理平台接口,将指定商品添加到促销白名单中") allure.step("[前置条件]:先调用管理平台接口,将指定商品添加到促销白名单中")
pre_respomse = self.yms.add_promotional_product_whitelist( pre_respomse = yms.add_promotional_product_whitelist(
self.promotional_whitelist_goods, self.market_and_store_info promotional_whitelist_goods, market_and_store_info
) )
if pre_respomse['data'] is not None: if pre_respomse['data'] is not None:
LOGGER.info(f"---商品 {self.promotional_whitelist_goods['GoodsInputcode']} "
f"已添加到促销白名单中")
allure.step("[业务步骤]:再调用客户端接口,执行加购操作") allure.step("[业务步骤]:再调用客户端接口,执行加购操作")
allure.step("步骤1session开始") allure.step("步骤1session开始")
self.ymc.session_start() ymc.session_start()
allure.step("步骤2:匿名登录") allure.step("步骤2:匿名登录")
Payload01 = {"action": 0, "isAnon": True} Payload01 = {"action": 0, "isAnon": True}
LoginData = self.ymc.login_app_v2(Payload01) LoginData = ymc.login_app_v2(Payload01)
allure.step("步骤3:获取白名单商品信息") allure.step("步骤3:获取白名单商品信息")
GoodsInfoData1 = self.ymc.get_goods_info(self.promotional_whitelist_goods["GoodsInputcode"]) GoodsInfoData1 = ymc.get_goods_info(promotional_whitelist_goods["GoodsInputcode"])
if GoodsInfoData1['msg'] != '加购商品不存在': if GoodsInfoData1['msg'] != '加购商品不存在':
allure.step("步骤4:加购白名单商品") allure.step("步骤4:加购白名单商品")
self.ymc.add_cart_goods(GoodsInfoData1, 1, LoginData) ymc.add_cart_goods(GoodsInfoData1, 1, LoginData)
allure.step("步骤5:获取购物车商品信息") allure.step("步骤5:获取购物车商品信息")
self.ymc.get_cart_goods_info([GoodsInfoData1]) ymc.get_cart_goods_info([GoodsInfoData1])
allure.step("步骤6:请求订单结算") allure.step("步骤6:请求订单结算")
self.ymc.request_order_settlement(LoginData) ymc.request_order_settlement(LoginData)
allure.step("[后置处理]:删除添加的促销白名单商品")
yms.delete_whitelist_goods()
else: else:
LOGGER.info(f"---商品 {self.promotional_whitelist_goods["GoodsInputcode"]} 不存在") allure.step("[后置处理]:删除添加的促销白名单商品")
pytest.fail(f"商品 {self.promotional_whitelist_goods["GoodsInputcode"]}不存在") yms.delete_whitelist_goods()
pytest.fail(f"商品 {promotional_whitelist_goods["GoodsInputcode"]}不存在")
allure.step("[后置处理]:删除添加的促销白名单商品")
self.yms.delete_whitelist_goods()
else: else:
LOGGER.info(f"---添加商品 {self.promotional_whitelist_goods['GoodsInputcode']} " pytest.fail(f"---添加商品 {promotional_whitelist_goods['GoodsInputcode']} "
f"到促销白名单失败")
pytest.fail(f"---添加商品 {self.promotional_whitelist_goods['GoodsInputcode']} "
f"到促销白名单失败") f"到促销白名单失败")
@@ -3,14 +3,14 @@
# @Author:: Arthur Wu # @Author:: Arthur Wu
# @Description:: 游客登录,加购重量放通商品并结算 # @Description:: 游客登录,加购重量放通商品并结算
# @Date:: 2021-05-10 16:30:22 # @Date:: 2021-05-10 16:30:22
import unittest,allure,time,pytest import unittest,allure,time,pytest,ddt
from configs.globalObj import LOGGER from configs.globalObj import LOGGER
from YiMao.businessFunc.ClientApiLib import YMClientApi from YiMao.businessFunc.ClientApiLib import YMClientApi
from YiMao.businessFunc.ServiceApiLib import YMServiceApi from YiMao.businessFunc.ServiceApiLib import YMServiceApi
from YiMao.data.WuShangSceneTestData import * from configs.globalParams import DataInit
DescName = "Anon007-非会员加购重量放通商品并结算" DescName = "Anon007-非会员加购重量放通商品并结算"
@ddt.ddt
@allure.story(f'[场景测试] {DescName}验证') @allure.story(f'[场景测试] {DescName}验证')
class Test_CAnon007(unittest.TestCase): class Test_CAnon007(unittest.TestCase):
f'''@Date:: 2024/11/15 f'''@Date:: 2024/11/15
@@ -20,51 +20,48 @@ class Test_CAnon007(unittest.TestCase):
1、武商测试环境,重量放通商品inputcode为: 1、武商测试环境,重量放通商品inputcode为:
6924743915848 6924743915848
''' '''
def setUp(self) -> None: @ddt.data(*DataInit)
self.timestamp = int(time.time()) def test_CAnon007_AddWeightToTheProduct(self, data):
self.ymc = YMClientApi(ShoppingCartMac) allure.dynamic.description(f"描述:{DescName}")
self.yms = YMServiceApi() ymc = YMClientApi(data["ShoppingCartMac"])
self.weight_to_whitelist_goods = WeightToWhitelistGoods yms = YMServiceApi()
self.market_and_store_info = { weight_to_whitelist_goods = data["WeightToWhitelistGoods"]
"MarketId": MarketAndStoreDetails["putMarketId"], market_and_store_info = {
"StoreId": MarketAndStoreDetails["putStoreId"][0] "MarketId": data["MarketAndStoreDetails"]['putMarketId'],
"StoreId": data["MarketAndStoreDetails"]['putStoreId'][0]
} }
def test_CAnon007_AddWeightToTheProduct(self):
allure.dynamic.description(f"描述:{DescName}")
allure.step("[前置条件]:先调用管理平台接口,将指定商品添加到重量放通白名单中") allure.step("[前置条件]:先调用管理平台接口,将指定商品添加到重量放通白名单中")
pre_respomse = self.yms.add_weight_to_whitelist( pre_respomse = yms.add_weight_to_whitelist(
self.weight_to_whitelist_goods, self.market_and_store_info weight_to_whitelist_goods, market_and_store_info
) )
if pre_respomse['data'] is not None: if pre_respomse['data'] is not None:
LOGGER.info(f"---商品 {self.weight_to_whitelist_goods['GoodsInputcode']} " LOGGER.info(f"---商品 {weight_to_whitelist_goods['GoodsInputcode']} "
f"已添加到重量放通白名单中") f"已添加到重量放通白名单中")
''' 2-再调用客户端接口,执行加购操作 ''' ''' 2-再调用客户端接口,执行加购操作 '''
allure.step("[业务步骤]:再调用客户端接口,执行加购操作") allure.step("[业务步骤]:再调用客户端接口,执行加购操作")
allure.step("步骤1session开始") allure.step("步骤1session开始")
self.ymc.session_start() ymc.session_start()
allure.step("步骤2:匿名登录") allure.step("步骤2:匿名登录")
Payload01 = {"action": 0, "isAnon": True} Payload01 = {"action": 0, "isAnon": True}
LoginData = self.ymc.login_app_v2(Payload01) LoginData = ymc.login_app_v2(Payload01)
allure.step("步骤3:获取白名单商品信息") allure.step("步骤3:获取白名单商品信息")
GoodsInfoData1 = self.ymc.get_goods_info(self.weight_to_whitelist_goods["GoodsInputcode"]) GoodsInfoData1 = ymc.get_goods_info(weight_to_whitelist_goods["GoodsInputcode"])
if GoodsInfoData1['msg'] != '加购商品不存在': if GoodsInfoData1['msg'] != '加购商品不存在':
allure.step("步骤4:加购白名单商品") allure.step("步骤4:加购白名单商品")
self.ymc.add_cart_goods(GoodsInfoData1, 1, LoginData) ymc.add_cart_goods(GoodsInfoData1, 1, LoginData)
allure.step("步骤5:获取购物车商品信息") allure.step("步骤5:获取购物车商品信息")
self.ymc.get_cart_goods_info([GoodsInfoData1]) ymc.get_cart_goods_info([GoodsInfoData1])
allure.step("步骤6:请求订单结算") allure.step("步骤6:请求订单结算")
self.ymc.request_order_settlement(LoginData) ymc.request_order_settlement(LoginData)
allure.step("[后置处理]:删除添加的重量放通白名单商品")
yms.delete_weight_whitelist_goods()
else: else:
LOGGER.info(f"---商品 {self.weight_to_whitelist_goods["GoodsInputcode"]} 不存在") allure.step("[后置处理]:删除添加的重量放通白名单商品")
pytest.fail(f"---商品 {self.weight_to_whitelist_goods["GoodsInputcode"]} 不存在") yms.delete_weight_whitelist_goods()
pytest.fail(f"---商品 {weight_to_whitelist_goods["GoodsInputcode"]} 不存在")
allure.step("[后置处理]:删除添加的重量放通白名单商品")
self.yms.delete_weight_whitelist_goods()
else: else:
LOGGER.info(f"---添加商品 {self.weight_to_whitelist_goods['GoodsInputcode']} " pytest.fail(f"---添加商品 {weight_to_whitelist_goods['GoodsInputcode']} "
f"到重量放通白名单失败")
pytest.fail(f"---添加商品 {self.weight_to_whitelist_goods['GoodsInputcode']} "
f"到重量放通白名单失败") f"到重量放通白名单失败")
@@ -3,13 +3,12 @@
# @Author:: Arthur Wu # @Author:: Arthur Wu
# @Description:: 游客登录,加购2个购物袋,退购一个购物袋,并结算 # @Description:: 游客登录,加购2个购物袋,退购一个购物袋,并结算
# @Date:: 2024/11/20 # @Date:: 2024/11/20
import unittest,allure,time,pytest import unittest,allure,time,pytest,ddt
from configs.globalObj import LOGGER
from YiMao.businessFunc.ClientApiLib import YMClientApi from YiMao.businessFunc.ClientApiLib import YMClientApi
from YiMao.data.WuShangSceneTestData import * from configs.globalParams import DataInit
DescName = "Anon008-非会员,加购2个购物袋,退购一个购物袋,并结算" DescName = "Anon008-非会员,加购2个购物袋,退购一个购物袋,并结算"
@ddt.ddt
@allure.story(f'[场景测试] {DescName}验证') @allure.story(f'[场景测试] {DescName}验证')
class Test_CAnon008(unittest.TestCase): class Test_CAnon008(unittest.TestCase):
f'''@Date:: 2024/11/20 f'''@Date:: 2024/11/20
@@ -18,46 +17,43 @@ class Test_CAnon008(unittest.TestCase):
[购物车客户端] {DescName} [购物车客户端] {DescName}
1、武商测试环境,购物袋的 inputcode 分别为: 1、武商测试环境,购物袋的 inputcode 分别为:
''' '''
def setUp(self) -> None: @ddt.data(*DataInit)
self.timestamp = int(time.time()) def test_CAnon008_ReturnShoppingBag(self, data):
self.ymc = YMClientApi(ShoppingCartMac)
self.shoppingbag_mid = GoodsBagInputcode_mid
self.shoppingbag_max = GoodsBagInputcode_max
def test_CAnon008_ReturnShoppingBag(self):
allure.dynamic.description(f"描述:{DescName}") allure.dynamic.description(f"描述:{DescName}")
ymc = YMClientApi(data["ShoppingCartMac"])
shoppingbag_mid = data["ShoppingBag"]["mid"]
shoppingbag_max = data["ShoppingBag"]["max"]
allure.step("步骤1session开始") allure.step("步骤1session开始")
self.ymc.session_start() ymc.session_start()
allure.step("步骤2:匿名登录") allure.step("步骤2:匿名登录")
Payload01 = {"action": 0, "isAnon": True} Payload01 = {"action": 0, "isAnon": True}
LoginData = self.ymc.login_app_v2(Payload01) LoginData = ymc.login_app_v2(Payload01)
'''step1:加购商品x,分别加购x件''' '''step1:加购商品x,分别加购x件'''
allure.step("步骤3:获取商品1信息") allure.step("步骤3:获取商品1信息")
GetGoodsInfoResp_01 = self.ymc.get_goods_info(InputCode=self.shoppingbag_mid) GetGoodsInfoResp_01 = ymc.get_goods_info(InputCode=shoppingbag_mid)
if GetGoodsInfoResp_01['msg'] != '加购商品不存在': if GetGoodsInfoResp_01['msg'] != '加购商品不存在':
allure.step("步骤4:添加商品1") allure.step("步骤4:添加商品1")
self.ymc.add_cart_goods(GetGoodsInfoResp_01, 2, LoginData) ymc.add_cart_goods(GetGoodsInfoResp_01, 2, LoginData)
allure.step("步骤5:获取商品2信息") allure.step("步骤5:获取商品2信息")
GetGoodsInfoResp_02 = self.ymc.get_goods_info(InputCode=self.shoppingbag_max) GetGoodsInfoResp_02 = ymc.get_goods_info(InputCode=shoppingbag_max)
if GetGoodsInfoResp_02['msg'] != '加购商品不存在': if GetGoodsInfoResp_02['msg'] != '加购商品不存在':
allure.step("步骤6:添加商品2") allure.step("步骤6:添加商品2")
AddGoodsResp = self.ymc.add_cart_goods(GetGoodsInfoResp_02, 2, LoginData) AddGoodsResp = ymc.add_cart_goods(GetGoodsInfoResp_02, 2, LoginData)
''' step2:随机退购一个商品,并结算 ''' ''' step2:随机退购一个商品,并结算 '''
allure.step("\n步骤7:退购一件商品") allure.step("\n步骤7:退购一件商品")
GetGoodsInfoList = [GetGoodsInfoResp_01, GetGoodsInfoResp_02] GetGoodsInfoList = [GetGoodsInfoResp_01, GetGoodsInfoResp_02]
self.ymc.delete_shopping_bag(GetGoodsInfoList, LoginData, AddGoodsResp) ymc.delete_shopping_bag(GetGoodsInfoList, LoginData, AddGoodsResp)
allure.step("步骤8:获取购物车商品信息") allure.step("步骤8:获取购物车商品信息")
self.ymc.get_cart_goods_info([GetGoodsInfoResp_01, GetGoodsInfoResp_02]) ymc.get_cart_goods_info([GetGoodsInfoResp_01, GetGoodsInfoResp_02])
allure.step("步骤9:请求订单结算") allure.step("步骤9:请求订单结算")
self.ymc.request_order_settlement(LoginData) ymc.request_order_settlement(LoginData)
else: else:
LOGGER.info(f"---商品 {self.shoppingbag_max} 不存在") pytest.fail(f"---商品 {shoppingbag_max} 不存在")
pytest.fail(f"---商品 {self.shoppingbag_max} 不存在")
else: else:
LOGGER.info(f"---商品 {self.shoppingbag_mid} 不存在") pytest.fail(f"---商品 {shoppingbag_mid} 不存在")
pytest.fail(f"---商品 {self.shoppingbag_mid} 不存在")
if __name__ == '__main__': if __name__ == '__main__':
@@ -3,13 +3,12 @@
# @Author:: Arthur Wu # @Author:: Arthur Wu
# @Description:: 游客登录,加购2个普通商品,退购一个,并结算 # @Description:: 游客登录,加购2个普通商品,退购一个,并结算
# @Date:: 2024/11/20 # @Date:: 2024/11/20
import unittest,allure,time,pytest import unittest,allure,time,pytest,ddt
from configs.globalObj import LOGGER
from YiMao.businessFunc.ClientApiLib import YMClientApi from YiMao.businessFunc.ClientApiLib import YMClientApi
from YiMao.data.WuShangSceneTestData import * from configs.globalParams import DataInit
DescName = "Anon009-非会员,加购2个普通商品,退购一个,并结算" DescName = "Anon009-非会员,加购2个普通商品,退购一个,并结算"
@ddt.ddt
@allure.story(f'[场景测试] {DescName}验证') @allure.story(f'[场景测试] {DescName}验证')
class Test_CAnon009(unittest.TestCase): class Test_CAnon009(unittest.TestCase):
f'''@Date:: 2024/11/20 f'''@Date:: 2024/11/20
@@ -18,46 +17,44 @@ class Test_CAnon009(unittest.TestCase):
[购物车客户端] {DescName} [购物车客户端] {DescName}
1、武商测试环境,2个普通商品 inputcode 分别为: 1、武商测试环境,2个普通商品 inputcode 分别为:
''' '''
def setUp(self) -> None: @ddt.data(*DataInit)
self.timestamp = int(time.time()) def test_CAnon009_ReturnPurchaseOfOrdinaryGoods(self, data):
self.ymc = YMClientApi(ShoppingCartMac)
self.goods_01 = NormalGoodsInputcode01
self.goods_02 = NormalGoodsInputcode02
def test_CAnon009_ReturnPurchaseOfOrdinaryGoods(self):
allure.dynamic.description(f"描述:{DescName}") allure.dynamic.description(f"描述:{DescName}")
ymc = YMClientApi(data["ShoppingCartMac"])
goods_01 = data["NormalGoods"]["goods01"]
goods_02 = data["NormalGoods"]["goods02"]
allure.step("步骤1session开始") allure.step("步骤1session开始")
self.ymc.session_start() ymc.session_start()
allure.step("步骤2:匿名登录") allure.step("步骤2:匿名登录")
Payload01 = {"action": 0, "isAnon": True} Payload01 = {"action": 0, "isAnon": True}
LoginData = self.ymc.login_app_v2(Payload01) LoginData = ymc.login_app_v2(Payload01)
'''step1:加购商品x,分别加购x件''' '''step1:加购商品x,分别加购x件'''
allure.step("步骤3:获取商品1信息") allure.step("步骤3:获取商品1信息")
GetGoodsInfoResp_01 = self.ymc.get_goods_info(InputCode=self.goods_01) GetGoodsInfoResp_01 = ymc.get_goods_info(InputCode=goods_01)
if GetGoodsInfoResp_01['msg'] != '加购商品不存在': if GetGoodsInfoResp_01['msg'] != '加购商品不存在':
allure.step("步骤4:添加商品1") allure.step("步骤4:添加商品1")
self.ymc.add_cart_goods(GetGoodsInfoResp_01, 1, LoginData) ymc.add_cart_goods(GetGoodsInfoResp_01, 1, LoginData)
allure.step("步骤5:获取商品2信息") allure.step("步骤5:获取商品2信息")
GetGoodsInfoResp_02 = self.ymc.get_goods_info(InputCode=self.goods_02) GetGoodsInfoResp_02 = ymc.get_goods_info(InputCode=goods_02)
if GetGoodsInfoResp_02['msg'] != '加购商品不存在': if GetGoodsInfoResp_02['msg'] != '加购商品不存在':
allure.step("步骤6:添加商品2") allure.step("步骤6:添加商品2")
AddGoodsResp = self.ymc.add_cart_goods(GetGoodsInfoResp_02, 1, LoginData) AddGoodsResp = ymc.add_cart_goods(GetGoodsInfoResp_02, 1, LoginData)
''' step2:随机退购一个商品,并结算 ''' ''' step2:随机退购一个商品,并结算 '''
allure.step("\n步骤7:退购一件商品") allure.step("\n步骤7:退购一件商品")
GetGoodsInfoList = [GetGoodsInfoResp_01, GetGoodsInfoResp_02] GetGoodsInfoList = [GetGoodsInfoResp_01, GetGoodsInfoResp_02]
self.ymc.delete_cart_goods(GetGoodsInfoList, LoginData, AddGoodsResp) AddGoodsResp_List = [AddGoodsResp]
ymc.delete_cart_goods(GetGoodsInfoList, LoginData, AddGoodsResp_List)
allure.step("步骤8:获取购物车商品信息") allure.step("步骤8:获取购物车商品信息")
self.ymc.get_cart_goods_info([GetGoodsInfoResp_01, GetGoodsInfoResp_02]) ymc.get_cart_goods_info([GetGoodsInfoResp_01, GetGoodsInfoResp_02])
allure.step("步骤9:请求订单结算") allure.step("步骤9:请求订单结算")
self.ymc.request_order_settlement(LoginData) ymc.request_order_settlement(LoginData)
else: else:
LOGGER.info(f"---商品 {self.goods_02} 不存在") pytest.fail(f"---商品 {goods_02} 不存在")
pytest.fail(f"---商品 {self.goods_02} 不存在")
else: else:
LOGGER.info(f"---商品 {self.goods_01} 不存在") pytest.fail(f"---商品 {goods_01} 不存在")
pytest.fail(f"---商品 {self.goods_01} 不存在")
if __name__ == '__main__': if __name__ == '__main__':
@@ -3,13 +3,13 @@
# @Author:: Arthur Wu # @Author:: Arthur Wu
# @Description:: 游客登录,加购2个会员商品,退购一个,并结算 # @Description:: 游客登录,加购2个会员商品,退购一个,并结算
# @Date:: 2024/11/20 # @Date:: 2024/11/20
import unittest,allure,time,pytest import unittest,allure,time,pytest,ddt
from configs.globalObj import LOGGER from configs.globalObj import LOGGER
from YiMao.businessFunc.ClientApiLib import YMClientApi from YiMao.businessFunc.ClientApiLib import YMClientApi
from YiMao.data.WuShangSceneTestData import * from configs.globalParams import DataInit
DescName = "Anon010-非会员,加购2个会员商品,退购一个,并结算" DescName = "Anon010-非会员,加购2个会员商品,退购一个,并结算"
@ddt.ddt
@allure.story(f'[场景测试] {DescName}验证') @allure.story(f'[场景测试] {DescName}验证')
class Test_CAnon010(unittest.TestCase): class Test_CAnon010(unittest.TestCase):
f'''@Date:: 2024/11/20 f'''@Date:: 2024/11/20
@@ -18,46 +18,65 @@ class Test_CAnon010(unittest.TestCase):
[购物车客户端] {DescName} [购物车客户端] {DescName}
1、武商测试环境,2个会员商品 inputcode 分别为: 1、武商测试环境,2个会员商品 inputcode 分别为:
''' '''
def setUp(self) -> None: @ddt.data(*DataInit)
self.timestamp = int(time.time()) def test_CAnon010_ReturnOfMemberProducts(self, data):
self.ymc = YMClientApi(ShoppingCartMac)
self.vip_goods_01 = VipGoodsInputcode
self.vip_goods_02 = VipGoodsInputcode02
def test_CAnon010_ReturnOfMemberProducts(self):
allure.dynamic.description(f"描述:{DescName}") allure.dynamic.description(f"描述:{DescName}")
ymc = YMClientApi(data["ShoppingCartMac"])
vip_goods_01 = data["VipGoods"]["goods01"]
vip_goods_02 = data["VipGoods"]["goods02"]
allure.step("步骤1session开始") allure.step("步骤1session开始")
self.ymc.session_start() ymc.session_start()
allure.step("步骤2:匿名登录") allure.step("步骤2:匿名登录")
Payload01 = {"action": 0, "isAnon": True} Payload01 = {"action": 0, "isAnon": True}
LoginData = self.ymc.login_app_v2(Payload01) LoginData = ymc.login_app_v2(Payload01)
'''step1:加购商品x,分别加购x件''' '''step1:加购商品x,分别加购x件'''
allure.step("步骤3:获取商品1信息") allure.step("步骤3:获取商品1信息")
GetGoodsInfoResp_01 = self.ymc.get_goods_info(InputCode=self.vip_goods_01) GetGoodsInfoResp_01 = ymc.get_goods_info(InputCode=vip_goods_01)
if GetGoodsInfoResp_01['msg'] != '加购商品不存在': if GetGoodsInfoResp_01['msg'] != '加购商品不存在':
allure.step("步骤4:添加商品1") allure.step("步骤4:添加商品1")
self.ymc.add_cart_goods(GetGoodsInfoResp_01, 3, LoginData) add_goods_dict = {}
AddGoodsResp_01 = ymc.add_cart_goods(GetGoodsInfoResp_01, 2, LoginData)
add_goods_dict[AddGoodsResp_01["data"]["orderItemList"][0]["inputCode"]] = AddGoodsResp_01["data"]["orderItemList"][0]["qty"]
allure.step("步骤5:获取商品2信息") allure.step("步骤5:获取商品2信息")
GetGoodsInfoResp_02 = self.ymc.get_goods_info(InputCode=self.vip_goods_02) GetGoodsInfoResp_02 = ymc.get_goods_info(InputCode=vip_goods_02)
if GetGoodsInfoResp_02['msg'] != '加购商品不存在': if GetGoodsInfoResp_02['msg'] != '加购商品不存在':
allure.step("步骤6:添加商品2") allure.step("步骤6:添加商品2")
AddGoodsResp = self.ymc.add_cart_goods(GetGoodsInfoResp_02, 1, LoginData) AddGoodsResp_02 = ymc.add_cart_goods(GetGoodsInfoResp_02, 1, LoginData)
add_goods_dict[AddGoodsResp_02["data"]["orderItemList"][0]["inputCode"]] = AddGoodsResp_02["data"]["orderItemList"][0]["qty"]
LOGGER.info(f"---添加的商品Inputcode和数量为:{add_goods_dict}\n")
''' step2:随机退购一个商品,并结算 ''' ''' step2:随机退购一个商品,并结算 '''
allure.step("\n步骤7:退购一件商品") allure.step("\n步骤7:退购一件商品")
GetGoodsInfoList = [GetGoodsInfoResp_01, GetGoodsInfoResp_02] GetGoodsInfoList = [GetGoodsInfoResp_01, GetGoodsInfoResp_02]
self.ymc.delete_cart_goods(GetGoodsInfoList, LoginData, AddGoodsResp) AddGoodsResp_List = [AddGoodsResp_01, AddGoodsResp_02]
delpayload = ymc.delete_cart_goods(GetGoodsInfoList, LoginData, AddGoodsResp_List)
delgoods_dict = {}
delgoods_dict[delpayload['deleteGoods'][0]['inputCode']] = delpayload['deleteGoods'][0]['qty']
LOGGER.info(f"---退购商品Inputcode和数量为:{delgoods_dict}\n")
# 刷新购物车商品数量:GoodsInfoData["data"]["qty"]
AddGoodsInfoAfterDel = {}
for k,v in add_goods_dict.items():
for k2,v2 in delgoods_dict.items():
if k == k2:
AddGoodsInfoAfterDel[k] = v - v2
LOGGER.info(f"---退购商品后,剩余商品及其数量为:{AddGoodsInfoAfterDel}\n")
cart_goods_info = [GetGoodsInfoResp_01, GetGoodsInfoResp_02]
for goods_info in cart_goods_info:
if goods_info['data']['inputCode'] in AddGoodsInfoAfterDel.keys():
goods_info['data']['qty'] = AddGoodsInfoAfterDel[goods_info['data']['inputCode']]
allure.step("步骤8:获取购物车商品信息") allure.step("步骤8:获取购物车商品信息")
self.ymc.get_cart_goods_info([GetGoodsInfoResp_01, GetGoodsInfoResp_02]) ymc.get_cart_goods_info(cart_goods_info)
allure.step("步骤9:请求订单结算") allure.step("步骤9:请求订单结算")
self.ymc.request_order_settlement(LoginData) ymc.request_order_settlement(LoginData)
else: else:
LOGGER.info(f"---商品 {self.vip_goods_02} 不存在") pytest.fail(f"---商品 {vip_goods_02} 不存在")
pytest.fail(f"---商品 {self.vip_goods_02} 不存在")
else: else:
LOGGER.info(f"---商品 {self.vip_goods_01} 不存在") pytest.fail(f"---商品 {vip_goods_01} 不存在")
pytest.fail(f"---商品 {self.vip_goods_01} 不存在")
if __name__ == '__main__': if __name__ == '__main__':
@@ -0,0 +1,62 @@
# !/usr/bin/python
# -*- coding: utf-8 -*-
# @Author:: Arthur Wu
# @Description:: 匿名转会员登录,领取优惠券
# @Date:: 2024/11/25
import unittest,allure,time,pytest,ddt
from configs.globalObj import LOGGER
from YiMao.businessFunc.ClientApiLib import YMClientApi
from configs.globalParams import DataInit
DescName = "Vip019-匿名转会员登录,领取优惠券"
@ddt.ddt
@allure.story(f'[场景测试] {DescName}验证')
class Test_CVip019(unittest.TestCase):
f'''@Date:: 2024/11/25
@Author:: Arthur Wu
@Desc::
[购物车客户端] {DescName}
'''
@ddt.data(*DataInit)
def test_CVip019_ReceiveCoupon(self, data):
allure.dynamic.description(f"描述:{DescName}\n")
ymc = YMClientApi(data["ShoppingCartMac"])
vip_phone_num = data["VIPPhoneNumber"]
goodsbag_mid = data["ShoppingBag"]["mid"]
goodsbag_max = data["ShoppingBag"]["max"]
allure.step("步骤1session开始")
ymc.session_start()
allure.step("步骤2:匿名登录")
Payload01 = {"action": 0, "isAnon": True}
LoginData = ymc.login_app_v2(Payload01)
allure.step("步骤3:切换会员登录")
Payload02 = {"action": 1, "code": vip_phone_num, "isAnon": False}
ymc.login_app_v2(Payload02)
allure.step("步骤4:领取优惠券")
CouponListData = ymc.get_coupon_list() # step6:获取优惠券列表
ymc.receive_coupon(CouponListData) # step7:领取优惠券
ymc.query_coupon_list_user() # step8:查询用户持有的优惠券列表
allure.step("步骤5:加购可享优惠券优惠的商品,并结算")
GoodsInfoData = ymc.get_goods_info(goodsbag_mid)
if GoodsInfoData['msg'] != '加购商品不存在':
allure.step("步骤6:添加购物袋")
AddPurchaseQuantity = 5
ymc.add_cart_goods(GoodsInfoData, AddPurchaseQuantity, LoginData)
GoodsInfoData["data"]["qty"] = AddPurchaseQuantity
allure.step("步骤7:获取购物车商品信息")
ymc.get_cart_goods_info([GoodsInfoData])
allure.step("步骤8:请求订单结算")
ymc.request_order_settlement(LoginData)
else:
LOGGER.info(f"---购物袋 {goodsbag_mid} 不存在")
pytest.fail(f"购物袋 {goodsbag_mid} 不存在")
if __name__ == '__main__':
unittest.main(verbosity=2)
+3
View File
@@ -44,3 +44,6 @@ class Common():
return str(timestamp_milliseconds) return str(timestamp_milliseconds)
+2 -2
View File
@@ -98,8 +98,8 @@ class NotificationModule():
"Debug": "7aedbee7239870e3e653748a2889d8bf063c61efa9213c7099bd57476066dc86", "Debug": "7aedbee7239870e3e653748a2889d8bf063c61efa9213c7099bd57476066dc86",
"Formal": "80b026022a28166cfc9eebaf8f6a880cc06f56a14b8803e8d67e7fb3cb05844e" "Formal": "80b026022a28166cfc9eebaf8f6a880cc06f56a14b8803e8d67e7fb3cb05844e"
} }
# self.urlInfo = datainfo["Domain"] + datainfo["Debug"] self.urlInfo = datainfo["Domain"] + datainfo["Debug"]
self.urlInfo = datainfo["Domain"] + datainfo["Formal"] # self.urlInfo = datainfo["Domain"] + datainfo["Formal"]
self.ReportUrl = ProCfgData["ReportsURL"] self.ReportUrl = ProCfgData["ReportsURL"]
self.ExecutionEnvironment = ProCfgData["ExecutionEnv"] self.ExecutionEnvironment = ProCfgData["ExecutionEnv"]
+14 -1
View File
@@ -13,7 +13,20 @@ class YamlHandler():
return yaml.load(f.read(), Loader=yaml.FullLoader) return yaml.load(f.read(), Loader=yaml.FullLoader)
except Exception as e: except Exception as e:
print("ERROR: read yaml file error::".format(e)) print("ERROR: read yaml file error::".format(e))
return 'failed to read avata autotest config file.' return 'failed to read config file.'
def read_some_yamls(self, YamlFilePathsList, encoding='utf-8'):
try:
result = []
for YamlFilePath in YamlFilePathsList:
with open(YamlFilePath, encoding=encoding) as f:
data = yaml.load(f.read(), Loader=yaml.FullLoader)
result.append(data)
return result
except Exception as e:
print("ERROR: read some yaml files error::".format(e))
return 'failed to read config file.'
class ReadExcel(object): class ReadExcel(object):
'''@Author:: Arthur Wu '''@Author:: Arthur Wu
+3
View File
@@ -10,3 +10,6 @@ ExecutionScope: YMBusiScenarios
# 3-Reports URL # 3-Reports URL
ReportsURL: http://192.168.1.165 ReportsURL: http://192.168.1.165
# 4-联测测试的商超列表: WuShang\ZhongBai\YongHui\JiajiaYue
MarketsArray:
- ZhongBai
+10 -3
View File
@@ -4,8 +4,6 @@ import os,datetime,time
from datetime import datetime,timedelta from datetime import datetime,timedelta
from commons.FileHandler import YamlHandler as yam from commons.FileHandler import YamlHandler as yam
from commons.SignatureYM import SignatureYM from commons.SignatureYM import SignatureYM
__RootPath = os.path.dirname(os.path.dirname(__file__)).replace("\\", "/") __RootPath = os.path.dirname(os.path.dirname(__file__)).replace("\\", "/")
__YamlFilePath = os.path.join(__RootPath, "configs/Configs.yaml").replace("\\", "/") __YamlFilePath = os.path.join(__RootPath, "configs/Configs.yaml").replace("\\", "/")
ProCfgData = yam().read_yaml(__YamlFilePath) ProCfgData = yam().read_yaml(__YamlFilePath)
@@ -29,7 +27,16 @@ GlobalParams = {
"todayDateAdd4": (datetime.now() + timedelta(days=4)).strftime('%Y-%m-%d'), "todayDateAdd4": (datetime.now() + timedelta(days=4)).strftime('%Y-%m-%d'),
"todayDateAdd5": (datetime.now() + timedelta(days=5)).strftime('%Y-%m-%d'), "todayDateAdd5": (datetime.now() + timedelta(days=5)).strftime('%Y-%m-%d'),
} }
def __data_init():
DataList = []
for fn in ProCfgData["MarketsArray"]:
FP = os.path.join(GlobalPath["YMDataPath"], fn+".yaml").replace("\\", "/")
print(f"---market scene test data file path: {FP}---")
data = yam().read_yaml(FP)
DataList.append(data)
return DataList
DataInit = __data_init()
print(f"---DataInit: {DataInit}")