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

View File

@ -1,5 +0,0 @@
# !/usr/bin/python
# -*- coding: utf-8 -*-
# @Author:: Arthur Wu
# @Description:: 会员登录,领取优惠券
# @Date:: 2024/11/21

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查询用户持有的优惠券列表

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
YiMao/data/WuShang.yaml Normal file
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
YiMao/data/YiMao.yaml Normal file
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
YiMao/data/ZhongBai.yaml Normal file
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:

View File

@ -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为
69716489229906971648922983 69716489229906971648922983
''' '''
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__':

View File

@ -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__':

View File

@ -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__':

View File

@ -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__':

View File

@ -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__':

View File

@ -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"到促销白名单失败")

View File

@ -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"到重量放通白名单失败")

View File

@ -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__':

View File

@ -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__':

View File

@ -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__':

View File

@ -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)

View File

@ -44,3 +44,6 @@ class Common():
return str(timestamp_milliseconds) return str(timestamp_milliseconds)

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"]

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

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

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}")