diff --git a/YiMao/ZeroLib/test_C030_NonToVipReceiveCoupon.py b/YiMao/ZeroLib/test_C030_NonToVipReceiveCoupon.py deleted file mode 100644 index 2df47a5..0000000 --- a/YiMao/ZeroLib/test_C030_NonToVipReceiveCoupon.py +++ /dev/null @@ -1,5 +0,0 @@ -# !/usr/bin/python -# -*- coding: utf-8 -*- -# @Author:: Arthur Wu -# @Description:: 会员登录,领取优惠券 -# @Date:: 2024/11/21 diff --git a/YiMao/businessFunc/ClientApiLib.py b/YiMao/businessFunc/ClientApiLib.py index 8b787bd..7a58e5b 100644 --- a/YiMao/businessFunc/ClientApiLib.py +++ b/YiMao/businessFunc/ClientApiLib.py @@ -104,7 +104,7 @@ class YMClientApi(object): logging.info(f"-----------接口返回数据:{response.json()}\n\n") return response.json() - def delete_cart_goods(self, GetGoodsInfoList, LoginData, AddGoodsResp): + def delete_cart_goods(self, GetGoodsInfoList, LoginData, AddGoodsRespList): ''' 退购 商品 :param GetGoodsInfoList: :param LoginData: @@ -114,7 +114,9 @@ class YMClientApi(object): import random logging.info("========== [退购 商品] delete_cart_goods ==========") 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["inputCode"] = add_goods_info["inputCode"] exist_goods_dict["isNormalAddPurchase"] = True @@ -130,6 +132,12 @@ class YMClientApi(object): existGoodsList.append(exist_goods_dict) del_goods_dict = {} + delGoodsInfo = { + "inputCode": "", + "isNormalAddPurchase": True, + "qty": 1, + "weight": 0, + } delGoodsInfo = random.choice(GetGoodsInfoList) del_goods_dict["inputCode"] = delGoodsInfo["data"]["inputCode"] del_goods_dict["isNormalAddPurchase"] = True @@ -148,11 +156,13 @@ class YMClientApi(object): "existGoods": existGoodsList, "orderNo": LoginData["data"][0]["orderNo"] }) + logging.info(f"-----------退购商品请求体为:{payload}\n") url = self.Domain + "/v2/shopping/add/retire/purchase" response = requests.request("POST", url, headers=self.headerss, data=payload) logging.info(f"-----------接口返回状态码:{response.status_code}") 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): ''' 退购 购物嗲 @@ -240,14 +250,14 @@ class YMClientApi(object): def get_cart_goods_info(self, GoodsDataList): logging.info("========== [获取购物车商品信息] get_cart_goods_info ==========") - goods_param_lList = [] + goods_param_list = [] for goods_data in GoodsDataList: goods_dict = {} goods_dict["inputCode"] = goods_data["data"]["inputCode"] goods_dict["qty"] = int(float((goods_data["data"]["qty"]))) goods_dict["weight"] = int(goods_data["data"]["weight"]) - goods_param_lList.append(goods_dict) - payload = json.dumps({"goodsParamList": goods_param_lList}, indent=4, ensure_ascii=False) + goods_param_list.append(goods_dict) + payload = json.dumps({"goodsParamList": goods_param_list}, indent=4, ensure_ascii=False) logging.info(f"-----------请求体为:{payload}") url = self.Domain+"/v2/shopping/cart/goods/info" response = requests.request("POST", url, headers=self.headerss, data=payload) @@ -295,6 +305,7 @@ if __name__ == '__main__': ymc.login_app_v2(Payload02) # step4:切换会员登录 GoodsInfoData = ymc.get_goods_info(InputCode=6924882486100) # step5:获取商品信息 ------ 6924882486100 + CouponListData = ymc.get_coupon_list() # step6:获取优惠券列表 ymc.receive_coupon(CouponListData) # step7:领取优惠券 ymc.query_coupon_list_user() # step8:查询用户持有的优惠券列表 diff --git a/YiMao/businessFunc/ServiceApiLib.py b/YiMao/businessFunc/ServiceApiLib.py index ac2ea4f..3186778 100644 --- a/YiMao/businessFunc/ServiceApiLib.py +++ b/YiMao/businessFunc/ServiceApiLib.py @@ -110,6 +110,40 @@ class YMServiceApi(object): logging.info(f"---接口返回状态码为:: {response.status_code}") 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): logging.info("========== [审核通过异常商品] ==========") auth_token_b = self.headerss["Authorization"] @@ -198,4 +232,9 @@ if __name__ == '__main__': yms = YMServiceApi() GoodsInfo = {"GoodsInputcode": "6924743915848"} MarketAndStoreDetails = {"putMarketId": 50, "putStoreId": ["69"]} - yms.approved_abnormal_products(MarketAndStoreDetails) \ No newline at end of file + + NewStoreInfo = { + "CartMac": "b8:2d:28:04:c7:5c", + "StoreId": 68, + } + yms.update_cart_info(NewStoreInfo) \ No newline at end of file diff --git a/YiMao/data/WuShangSceneTestData.py b/YiMao/data/WuShang.py similarity index 100% rename from YiMao/data/WuShangSceneTestData.py rename to YiMao/data/WuShang.py diff --git a/YiMao/data/WuShang.yaml b/YiMao/data/WuShang.yaml new file mode 100644 index 0000000..cd436bb --- /dev/null +++ b/YiMao/data/WuShang.yaml @@ -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: 优选大白菜秧 diff --git a/YiMao/data/YiMao.yaml b/YiMao/data/YiMao.yaml new file mode 100644 index 0000000..26733cb --- /dev/null +++ b/YiMao/data/YiMao.yaml @@ -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: diff --git a/YiMao/data/ZhongBai.yaml b/YiMao/data/ZhongBai.yaml new file mode 100644 index 0000000..0b862bb --- /dev/null +++ b/YiMao/data/ZhongBai.yaml @@ -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: diff --git a/YiMao/scripts/BusiScenarios/test_CAnon001_AddShoppingBagAndSettlePayment.py b/YiMao/scripts/BusiScenarios/test_CAnon001_AddShoppingBagAndSettlePayment.py index 3372641..486d301 100644 --- a/YiMao/scripts/BusiScenarios/test_CAnon001_AddShoppingBagAndSettlePayment.py +++ b/YiMao/scripts/BusiScenarios/test_CAnon001_AddShoppingBagAndSettlePayment.py @@ -3,13 +3,12 @@ # @Author:: Arthur Wu # @Date:: 2024/11/18-9:38 # @Description:: -import unittest,allure,time,pytest -from configs.globalObj import LOGGER +import unittest,allure,time,pytest,ddt +from configs.globalParams import DataInit from YiMao.businessFunc.ClientApiLib import YMClientApi -from YiMao.data.WuShangSceneTestData import * - - DescName = "Anon001-非会员加购购物袋并试算" + +@ddt.ddt @allure.story(f'[场景测试] {DescName}验证') class Test_CAnon001_AddShoppingBagAndSettlePayment(unittest.TestCase): f'''@Date:: 2024/11/15 @@ -19,51 +18,51 @@ class Test_CAnon001_AddShoppingBagAndSettlePayment(unittest.TestCase): 1、武商测试环境,购物袋inputcode为: 6971648922990、6971648922983 ''' - def setUp(self) -> None: - self.timestamp = int(time.time()) - self.ymc = YMClientApi(ShoppingCartMac) - self.goodsbag_mid = GoodsBagInputcode_mid - self.goodsbag_max = GoodsBagInputcode_max - - def test_CAnon00101_AddMidShoppingbagsForPurchase(self): + @ddt.data(*DataInit) + def test_CAnon00101_AddMidShoppingbagsForPurchase(self, data): allure.dynamic.description(f"描述:加购中号购物袋") - allure.step("步骤1:session开始") - self.ymc.session_start() - 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} 不存在") + ymc = YMClientApi(data["ShoppingCartMac"]) + goodsbag_mid = data["ShoppingBag"]["mid"] - def test_CAnon00102_AddMaxShoppingbagsForPurchase(self): - allure.dynamic.description("描述:加购大号购物袋") allure.step("步骤1:session开始") - self.ymc.session_start() + ymc.session_start() allure.step("步骤2:匿名登录") Payload01 = {"action": 0, "isAnon": True} - LoginData = self.ymc.login_app_v2(Payload01) + LoginData = ymc.login_app_v2(Payload01) allure.step("步骤3:获取商品信息") - GoodsInfoData = self.ymc.get_goods_info(self.goodsbag_max) + GoodsInfoData = ymc.get_goods_info(goodsbag_mid) if GoodsInfoData['msg'] != '加购商品不存在': allure.step("步骤4:添加购物袋") - self.ymc.add_cart_goods(GoodsInfoData, 2, LoginData) + ymc.add_cart_goods(GoodsInfoData, 2, LoginData) allure.step("步骤5:获取购物车商品信息") - self.ymc.get_cart_goods_info([GoodsInfoData]) + ymc.get_cart_goods_info([GoodsInfoData]) allure.step("步骤6:请求订单结算") - self.ymc.request_order_settlement(LoginData) + ymc.request_order_settlement(LoginData) else: - LOGGER.info(f"---购物袋 {self.goodsbag_max} 不存在") - pytest.fail(f"购物袋 {self.goodsbag_mid} 不存在") + pytest.fail(f"购物袋 {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("步骤1:session开始") + 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__': diff --git a/YiMao/scripts/BusiScenarios/test_CAnon002_AddNonDiscountedProductsForPurchase.py b/YiMao/scripts/BusiScenarios/test_CAnon002_AddNonDiscountedProductsForPurchase.py index 2099348..c1d4301 100644 --- a/YiMao/scripts/BusiScenarios/test_CAnon002_AddNonDiscountedProductsForPurchase.py +++ b/YiMao/scripts/BusiScenarios/test_CAnon002_AddNonDiscountedProductsForPurchase.py @@ -3,13 +3,12 @@ # @Author:: Arthur Wu # @Date:: 2024/11/18-10:49 # @Description:: 游客登录,加购无优惠普通商品并结算 -import unittest,allure,time,pytest -from configs.globalObj import LOGGER +import unittest,allure,time,pytest,ddt from YiMao.businessFunc.ClientApiLib import YMClientApi -from YiMao.data.WuShangSceneTestData import * - - +from configs.globalParams import DataInit DescName = "Anon002-非会员加购无优惠商品并试算" + +@ddt.ddt @allure.story(f'[场景测试] {DescName}验证') class Test_CAnon002(unittest.TestCase): f'''@Date:: 2024/11/15 @@ -19,30 +18,28 @@ class Test_CAnon002(unittest.TestCase): 1、武商测试环境,普通无优惠商品inputcode为: 6924743915848 ''' - def setUp(self) -> None: - self.timestamp = int(time.time()) - self.ymc = YMClientApi(ShoppingCartMac) - self.NormalGoodsInputcode01 = NormalGoodsInputcode01 - - def test_CAnon002_AddNonDiscountedProductsForPurchase(self): + @ddt.data(*DataInit) + def test_CAnon002_AddNonDiscountedProductsForPurchase(self, data): allure.dynamic.description(f"描述:{DescName}") + ymc = YMClientApi(data["ShoppingCartMac"]) + NormalGoodsInputcode01 = data["NormalGoods"]["goods01"] + allure.step("步骤1:session开始") - self.ymc.session_start() + ymc.session_start() allure.step("步骤2:匿名登录") Payload01 = {"action": 0, "isAnon": True} - LoginData = self.ymc.login_app_v2(Payload01) + LoginData = ymc.login_app_v2(Payload01) allure.step("步骤3:获取商品信息") - GoodsInfoData = self.ymc.get_goods_info(InputCode=self.NormalGoodsInputcode01) + GoodsInfoData = ymc.get_goods_info(InputCode=NormalGoodsInputcode01) if GoodsInfoData['msg'] != '加购商品不存在': allure.step("步骤4:添加无优惠商品") - self.ymc.add_cart_goods(GoodsInfoData, 5, LoginData) + ymc.add_cart_goods(GoodsInfoData, 5, LoginData) allure.step("步骤5:获取购物车商品信息") - self.ymc.get_cart_goods_info([GoodsInfoData]) + ymc.get_cart_goods_info([GoodsInfoData]) allure.step("步骤6:请求订单结算") - self.ymc.request_order_settlement(LoginData) + ymc.request_order_settlement(LoginData) else: - LOGGER.info(f"---商品 {self.NormalGoodsInputcode01} 不存在") - pytest.fail(f"商品 {self.NormalGoodsInputcode01} 不存在") + pytest.fail(f"商品 {NormalGoodsInputcode01} 不存在") if __name__ == '__main__': diff --git a/YiMao/scripts/BusiScenarios/test_CAnon003_AddMemberProductsForPurchase.py b/YiMao/scripts/BusiScenarios/test_CAnon003_AddMemberProductsForPurchase.py index b4a3a81..064e6d2 100644 --- a/YiMao/scripts/BusiScenarios/test_CAnon003_AddMemberProductsForPurchase.py +++ b/YiMao/scripts/BusiScenarios/test_CAnon003_AddMemberProductsForPurchase.py @@ -3,46 +3,41 @@ # @Author:: Arthur Wu # @Description:: 游客登录,加购会员商品并结算 # @Date:: 2021-05-10 16:30:23 -import unittest,allure,time,pytest -from configs.globalObj import LOGGER +import unittest,allure,time,pytest,ddt from YiMao.businessFunc.ClientApiLib import YMClientApi -from YiMao.data.WuShangSceneTestData import * - - +from configs.globalParams import DataInit DescName = "Anon003-非会员加购会员商品并结算" + +@ddt.ddt @allure.story(f'[场景测试] {DescName}验证') class Test_CAnon003(unittest.TestCase): f'''@Date:: 2024/11/15 @Author:: Arthur Wu @Desc:: [购物车客户端] {DescName} - 1、武商测试环境,会员有优惠商品inputcode为: - !!!!会员有优惠商品暂未提供 ''' - def setUp(self) -> None: - self.timestamp = int(time.time()) - self.ymc = YMClientApi(ShoppingCartMac) - self.vip_goods_inputcode = VipGoodsInputcode - - def test_CAnon003_AddMemberProductsForPurchase(self): + @ddt.data(*DataInit) + def test_CAnon003_AddMemberProductsForPurchase(self, data): allure.dynamic.description(f"描述:{DescName}") + ymc = YMClientApi(data["ShoppingCartMac"]) + vip_goods_inputcode = data["VipGoods"]["goods01"] + allure.step("步骤1:session开始") - self.ymc.session_start() + ymc.session_start() allure.step("步骤2:匿名登录") Payload01 = {"action": 0, "isAnon": True} - LoginData = self.ymc.login_app_v2(Payload01) + LoginData = ymc.login_app_v2(Payload01) allure.step("步骤3:获取商品信息") - GoodsInfoData = self.ymc.get_goods_info(self.vip_goods_inputcode) + GoodsInfoData = ymc.get_goods_info(vip_goods_inputcode) if GoodsInfoData['msg'] != '加购商品不存在': allure.step("步骤4:添加会员有优惠商品") - self.ymc.add_cart_goods(GoodsInfoData, 1, LoginData) + ymc.add_cart_goods(GoodsInfoData, 1, LoginData) allure.step("步骤5:获取购物车商品信息") - self.ymc.get_cart_goods_info([GoodsInfoData]) + ymc.get_cart_goods_info([GoodsInfoData]) allure.step("步骤6:请求订单结算") - self.ymc.request_order_settlement(LoginData) + ymc.request_order_settlement(LoginData) else: - LOGGER.info(f"---商品 {self.vip_goods_inputcode} 不存在") - pytest.fail(f"商品 {self.vip_goods_inputcode} 不存在") + pytest.fail(f"商品 {vip_goods_inputcode} 不存在") if __name__ == '__main__': diff --git a/YiMao/scripts/BusiScenarios/test_CAnon004_AddMultipleItemsForPurchase.py b/YiMao/scripts/BusiScenarios/test_CAnon004_AddMultipleItemsForPurchase.py index 4cd59cc..f9612d3 100644 --- a/YiMao/scripts/BusiScenarios/test_CAnon004_AddMultipleItemsForPurchase.py +++ b/YiMao/scripts/BusiScenarios/test_CAnon004_AddMultipleItemsForPurchase.py @@ -3,13 +3,12 @@ # @Author:: Arthur Wu # @Description:: 游客登录,加购多件商品并结算 # @Date:: 2021-05-10 16:30:23 -import unittest,allure,time,pytest -from configs.globalObj import LOGGER +import unittest,allure,time,pytest,ddt from YiMao.businessFunc.ClientApiLib import YMClientApi -from YiMao.data.WuShangSceneTestData import * - - +from configs.globalParams import DataInit DescName = "Anon004-非会员加购多件商品并结算" + +@ddt.ddt @allure.story(f'[场景测试] {DescName}验证') class Test_CAnon004(unittest.TestCase): f'''@Date:: 2024/11/15 @@ -18,39 +17,36 @@ class Test_CAnon004(unittest.TestCase): [购物车客户端] {DescName} 1、武商测试环境,多件商品的 inputcode 分别为: ''' - def setUp(self) -> None: - self.timestamp = int(time.time()) - self.ymc = YMClientApi(ShoppingCartMac) - self.goods_inputcode1 = NormalGoodsInputcode01 - self.goods_inputcode2 = NormalGoodsInputcode02 - - def test_CAnon004_AddMultipleItemsForPurchase(self): + @ddt.data(*DataInit) + def test_CAnon004_AddMultipleItemsForPurchase(self, data): allure.dynamic.description(f"描述:{DescName}") + ymc = YMClientApi(data["ShoppingCartMac"]) + goods_inputcode1 = data["NormalGoods"]["goods01"] + goods_inputcode2 = data["NormalGoods"]["goods02"] + allure.step("步骤1:session开始") - self.ymc.session_start() + ymc.session_start() allure.step("步骤2:匿名登录") Payload01 = {"action": 0, "isAnon": True} - LoginData = self.ymc.login_app_v2(Payload01) + LoginData = ymc.login_app_v2(Payload01) 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'] != '加购商品不存在': allure.step("步骤4:添加商品1") - self.ymc.add_cart_goods(GoodsInfoData1, 1, LoginData) + ymc.add_cart_goods(GoodsInfoData1, 1, LoginData) 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'] != '加购商品不存在': allure.step("步骤6:添加商品2") - self.ymc.add_cart_goods(GoodsInfoData2, 1, LoginData) + ymc.add_cart_goods(GoodsInfoData2, 1, LoginData) allure.step("步骤7:获取购物车商品信息") - self.ymc.get_cart_goods_info([GoodsInfoData1, GoodsInfoData2]) + ymc.get_cart_goods_info([GoodsInfoData1, GoodsInfoData2]) allure.step("步骤8:请求订单结算") - self.ymc.request_order_settlement(LoginData) + ymc.request_order_settlement(LoginData) else: - LOGGER.info(f"---商品 {self.goods_inputcode2} 不存在") - pytest.fail(f"商品 {self.goods_inputcode2} 不存在") + pytest.fail(f"商品 {goods_inputcode2} 不存在") else: - LOGGER.info(f"---商品 {self.goods_inputcode1} 不存在") - pytest.fail(f"商品 {self.goods_inputcode1} 不存在") + pytest.fail(f"商品 {goods_inputcode1} 不存在") if __name__ == '__main__': diff --git a/YiMao/scripts/BusiScenarios/test_CAnon005_AddDiscountedProductsForPurchase.py b/YiMao/scripts/BusiScenarios/test_CAnon005_AddDiscountedProductsForPurchase.py index 376b091..46ffcc7 100644 --- a/YiMao/scripts/BusiScenarios/test_CAnon005_AddDiscountedProductsForPurchase.py +++ b/YiMao/scripts/BusiScenarios/test_CAnon005_AddDiscountedProductsForPurchase.py @@ -3,13 +3,12 @@ # @Author:: Arthur Wu # @Description:: 游客登录,加购打折商品并结算 # @Date:: 2021-05-10 16:30:22 -import unittest,allure,time,pytest -from configs.globalObj import LOGGER +import unittest,allure,time,pytest,ddt from YiMao.businessFunc.ClientApiLib import YMClientApi -from YiMao.data.WuShangSceneTestData import * - - +from configs.globalParams import DataInit DescName = "Anon005-非会员加购打折商品并结算" + +@ddt.ddt @allure.story(f'[场景测试] {DescName}验证') class Test_CAnon005(unittest.TestCase): f'''@Date:: 2024/11/15 @@ -19,30 +18,28 @@ class Test_CAnon005(unittest.TestCase): 1、武商测试环境,会员有优惠商品inputcode为: !!!!折扣商品暂未提供 ''' - def setUp(self) -> None: - self.timestamp = int(time.time()) - self.ymc = YMClientApi(ShoppingCartMac) - self.sale_goods_inputCode = SaleGoodsInputCode - - def test_CAnon005_AddDiscountedProductsForPurchase(self): + @ddt.data(*DataInit) + def test_CAnon005_AddDiscountedProductsForPurchase(self, data): allure.dynamic.description(f"描述:{DescName}") + ymc = YMClientApi(data["ShoppingCartMac"]) + sale_goods_inputCode = data["SaleGoods"]["goods01"] + allure.step("步骤1:session开始") - self.ymc.session_start() + ymc.session_start() allure.step("步骤2:匿名登录") Payload01 = {"action": 0, "isAnon": True} - LoginData = self.ymc.login_app_v2(Payload01) + LoginData = ymc.login_app_v2(Payload01) 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'] != '加购商品不存在': allure.step("步骤4:加购折扣商品") - self.ymc.add_cart_goods(GoodsInfoData, 1, LoginData) + ymc.add_cart_goods(GoodsInfoData, 1, LoginData) allure.step("步骤5:获取购物车商品信息") - self.ymc.get_cart_goods_info([GoodsInfoData]) + ymc.get_cart_goods_info([GoodsInfoData]) allure.step("步骤6:请求订单结算") - self.ymc.request_order_settlement(LoginData) + ymc.request_order_settlement(LoginData) else: - LOGGER.info(f"---商品 {self.sale_goods_inputCode} 不存在") - pytest.fail(f"---商品 {self.sale_goods_inputCode} 不存在") + pytest.fail(f"---商品 {sale_goods_inputCode} 不存在") if __name__ == '__main__': diff --git a/YiMao/scripts/BusiScenarios/test_CAnon006_AddPromotionalWhitelistProducts.py b/YiMao/scripts/BusiScenarios/test_CAnon006_AddPromotionalWhitelistProducts.py index ccf8f83..df7d6ea 100644 --- a/YiMao/scripts/BusiScenarios/test_CAnon006_AddPromotionalWhitelistProducts.py +++ b/YiMao/scripts/BusiScenarios/test_CAnon006_AddPromotionalWhitelistProducts.py @@ -3,14 +3,13 @@ # @Author:: Arthur Wu # @Description:: 游客登录,加购促销白名单商品并结算 # @Date:: 2021-05-10 16:30:23 -import unittest,allure,time,pytest -from configs.globalObj import LOGGER +import unittest,allure,time,pytest,ddt from YiMao.businessFunc.ClientApiLib import YMClientApi from YiMao.businessFunc.ServiceApiLib import YMServiceApi -from YiMao.data.WuShangSceneTestData import * - - +from configs.globalParams import DataInit DescName = "Anon006-非会员加购促销白名单商品并结算" + +@ddt.ddt @allure.story(f'[场景测试] {DescName}验证') class Test_CAnon006(unittest.TestCase): f'''@Date:: 2024/11/15 @@ -20,50 +19,45 @@ class Test_CAnon006(unittest.TestCase): 1、武商测试环境,促销白名单商品inputcode为: 6925303796426 ''' - def setUp(self) -> None: - self.timestamp = int(time.time()) - self.ymc = YMClientApi(ShoppingCartMac) - self.yms = YMServiceApi() - self.promotional_whitelist_goods = PromotionalWhitelistGoods - self.market_and_store_info = { - "MarketId": MarketAndStoreDetails["putMarketId"], - "StoreId": MarketAndStoreDetails["putStoreId"][0] + @ddt.data(*DataInit) + def test_CAnon006_AddPromotionalWhitelistProducts(self, data): + allure.dynamic.description(f"描述:{DescName}") + ymc = YMClientApi(data["ShoppingCartMac"]) + yms = YMServiceApi() + promotional_whitelist_goods = data["PromotionalWhitelistGoods"] + market_and_store_info = { + "MarketId": data["MarketAndStoreDetails"]['putMarketId'], + "StoreId": data["MarketAndStoreDetails"]['putStoreId'][0] } - def test_CAnon006_AddPromotionalWhitelistProducts(self): - allure.dynamic.description(f"描述:{DescName}") allure.step("[前置条件]:先调用管理平台接口,将指定商品添加到促销白名单中") - pre_respomse = self.yms.add_promotional_product_whitelist( - self.promotional_whitelist_goods, self.market_and_store_info + pre_respomse = yms.add_promotional_product_whitelist( + promotional_whitelist_goods, market_and_store_info ) if pre_respomse['data'] is not None: - LOGGER.info(f"---商品 {self.promotional_whitelist_goods['GoodsInputcode']} " - f"已添加到促销白名单中") allure.step("[业务步骤]:再调用客户端接口,执行加购操作") allure.step("步骤1:session开始") - self.ymc.session_start() + ymc.session_start() allure.step("步骤2:匿名登录") Payload01 = {"action": 0, "isAnon": True} - LoginData = self.ymc.login_app_v2(Payload01) + LoginData = ymc.login_app_v2(Payload01) 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'] != '加购商品不存在': allure.step("步骤4:加购白名单商品") - self.ymc.add_cart_goods(GoodsInfoData1, 1, LoginData) + ymc.add_cart_goods(GoodsInfoData1, 1, LoginData) allure.step("步骤5:获取购物车商品信息") - self.ymc.get_cart_goods_info([GoodsInfoData1]) + ymc.get_cart_goods_info([GoodsInfoData1]) allure.step("步骤6:请求订单结算") - self.ymc.request_order_settlement(LoginData) + ymc.request_order_settlement(LoginData) + allure.step("[后置处理]:删除添加的促销白名单商品") + yms.delete_whitelist_goods() else: - LOGGER.info(f"---商品 {self.promotional_whitelist_goods["GoodsInputcode"]} 不存在") - pytest.fail(f"商品 {self.promotional_whitelist_goods["GoodsInputcode"]}不存在") - - allure.step("[后置处理]:删除添加的促销白名单商品") - self.yms.delete_whitelist_goods() + allure.step("[后置处理]:删除添加的促销白名单商品") + yms.delete_whitelist_goods() + pytest.fail(f"商品 {promotional_whitelist_goods["GoodsInputcode"]}不存在") else: - LOGGER.info(f"---添加商品 {self.promotional_whitelist_goods['GoodsInputcode']} " - f"到促销白名单失败") - pytest.fail(f"---添加商品 {self.promotional_whitelist_goods['GoodsInputcode']} " + pytest.fail(f"---添加商品 {promotional_whitelist_goods['GoodsInputcode']} " f"到促销白名单失败") diff --git a/YiMao/scripts/BusiScenarios/test_CAnon007_AddWeightToTheProduct.py b/YiMao/scripts/BusiScenarios/test_CAnon007_AddWeightToTheProduct.py index da1c534..a231a18 100644 --- a/YiMao/scripts/BusiScenarios/test_CAnon007_AddWeightToTheProduct.py +++ b/YiMao/scripts/BusiScenarios/test_CAnon007_AddWeightToTheProduct.py @@ -3,14 +3,14 @@ # @Author:: Arthur Wu # @Description:: 游客登录,加购重量放通商品并结算 # @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.ServiceApiLib import YMServiceApi -from YiMao.data.WuShangSceneTestData import * - - +from configs.globalParams import DataInit DescName = "Anon007-非会员加购重量放通商品并结算" + +@ddt.ddt @allure.story(f'[场景测试] {DescName}验证') class Test_CAnon007(unittest.TestCase): f'''@Date:: 2024/11/15 @@ -20,51 +20,48 @@ class Test_CAnon007(unittest.TestCase): 1、武商测试环境,重量放通商品inputcode为: 6924743915848 ''' - def setUp(self) -> None: - self.timestamp = int(time.time()) - self.ymc = YMClientApi(ShoppingCartMac) - self.yms = YMServiceApi() - self.weight_to_whitelist_goods = WeightToWhitelistGoods - self.market_and_store_info = { - "MarketId": MarketAndStoreDetails["putMarketId"], - "StoreId": MarketAndStoreDetails["putStoreId"][0] + @ddt.data(*DataInit) + def test_CAnon007_AddWeightToTheProduct(self, data): + allure.dynamic.description(f"描述:{DescName}") + ymc = YMClientApi(data["ShoppingCartMac"]) + yms = YMServiceApi() + weight_to_whitelist_goods = data["WeightToWhitelistGoods"] + market_and_store_info = { + "MarketId": data["MarketAndStoreDetails"]['putMarketId'], + "StoreId": data["MarketAndStoreDetails"]['putStoreId'][0] } - def test_CAnon007_AddWeightToTheProduct(self): - allure.dynamic.description(f"描述:{DescName}") allure.step("[前置条件]:先调用管理平台接口,将指定商品添加到重量放通白名单中") - pre_respomse = self.yms.add_weight_to_whitelist( - self.weight_to_whitelist_goods, self.market_and_store_info + pre_respomse = yms.add_weight_to_whitelist( + weight_to_whitelist_goods, market_and_store_info ) 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"已添加到重量放通白名单中") ''' 2-再调用客户端接口,执行加购操作 ''' allure.step("[业务步骤]:再调用客户端接口,执行加购操作") allure.step("步骤1:session开始") - self.ymc.session_start() + ymc.session_start() allure.step("步骤2:匿名登录") Payload01 = {"action": 0, "isAnon": True} - LoginData = self.ymc.login_app_v2(Payload01) + LoginData = ymc.login_app_v2(Payload01) 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'] != '加购商品不存在': allure.step("步骤4:加购白名单商品") - self.ymc.add_cart_goods(GoodsInfoData1, 1, LoginData) + ymc.add_cart_goods(GoodsInfoData1, 1, LoginData) allure.step("步骤5:获取购物车商品信息") - self.ymc.get_cart_goods_info([GoodsInfoData1]) + ymc.get_cart_goods_info([GoodsInfoData1]) allure.step("步骤6:请求订单结算") - self.ymc.request_order_settlement(LoginData) + ymc.request_order_settlement(LoginData) + allure.step("[后置处理]:删除添加的重量放通白名单商品") + yms.delete_weight_whitelist_goods() else: - LOGGER.info(f"---商品 {self.weight_to_whitelist_goods["GoodsInputcode"]} 不存在") - pytest.fail(f"---商品 {self.weight_to_whitelist_goods["GoodsInputcode"]} 不存在") - - allure.step("[后置处理]:删除添加的重量放通白名单商品") - self.yms.delete_weight_whitelist_goods() + allure.step("[后置处理]:删除添加的重量放通白名单商品") + yms.delete_weight_whitelist_goods() + pytest.fail(f"---商品 {weight_to_whitelist_goods["GoodsInputcode"]} 不存在") else: - LOGGER.info(f"---添加商品 {self.weight_to_whitelist_goods['GoodsInputcode']} " - f"到重量放通白名单失败") - pytest.fail(f"---添加商品 {self.weight_to_whitelist_goods['GoodsInputcode']} " + pytest.fail(f"---添加商品 {weight_to_whitelist_goods['GoodsInputcode']} " f"到重量放通白名单失败") diff --git a/YiMao/scripts/BusiScenarios/test_CAnon008_ReturnShoppingBag.py b/YiMao/scripts/BusiScenarios/test_CAnon008_ReturnShoppingBag.py index fe21be7..17c81aa 100644 --- a/YiMao/scripts/BusiScenarios/test_CAnon008_ReturnShoppingBag.py +++ b/YiMao/scripts/BusiScenarios/test_CAnon008_ReturnShoppingBag.py @@ -3,13 +3,12 @@ # @Author:: Arthur Wu # @Description:: 游客登录,加购2个购物袋,退购一个购物袋,并结算 # @Date:: 2024/11/20 -import unittest,allure,time,pytest -from configs.globalObj import LOGGER +import unittest,allure,time,pytest,ddt from YiMao.businessFunc.ClientApiLib import YMClientApi -from YiMao.data.WuShangSceneTestData import * - - +from configs.globalParams import DataInit DescName = "Anon008-非会员,加购2个购物袋,退购一个购物袋,并结算" + +@ddt.ddt @allure.story(f'[场景测试] {DescName}验证') class Test_CAnon008(unittest.TestCase): f'''@Date:: 2024/11/20 @@ -18,46 +17,43 @@ class Test_CAnon008(unittest.TestCase): [购物车客户端] {DescName} 1、武商测试环境,购物袋的 inputcode 分别为: ''' - def setUp(self) -> None: - self.timestamp = int(time.time()) - self.ymc = YMClientApi(ShoppingCartMac) - self.shoppingbag_mid = GoodsBagInputcode_mid - self.shoppingbag_max = GoodsBagInputcode_max - - def test_CAnon008_ReturnShoppingBag(self): + @ddt.data(*DataInit) + def test_CAnon008_ReturnShoppingBag(self, data): allure.dynamic.description(f"描述:{DescName}") + ymc = YMClientApi(data["ShoppingCartMac"]) + shoppingbag_mid = data["ShoppingBag"]["mid"] + shoppingbag_max = data["ShoppingBag"]["max"] + allure.step("步骤1:session开始") - self.ymc.session_start() + ymc.session_start() allure.step("步骤2:匿名登录") Payload01 = {"action": 0, "isAnon": True} - LoginData = self.ymc.login_app_v2(Payload01) + LoginData = ymc.login_app_v2(Payload01) '''step1:加购商品x,分别加购x件''' 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'] != '加购商品不存在': 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信息") - GetGoodsInfoResp_02 = self.ymc.get_goods_info(InputCode=self.shoppingbag_max) + GetGoodsInfoResp_02 = ymc.get_goods_info(InputCode=shoppingbag_max) if GetGoodsInfoResp_02['msg'] != '加购商品不存在': allure.step("步骤6:添加商品2") - AddGoodsResp = self.ymc.add_cart_goods(GetGoodsInfoResp_02, 2, LoginData) + AddGoodsResp = ymc.add_cart_goods(GetGoodsInfoResp_02, 2, LoginData) ''' step2:随机退购一个商品,并结算 ''' allure.step("\n步骤7:退购一件商品") GetGoodsInfoList = [GetGoodsInfoResp_01, GetGoodsInfoResp_02] - self.ymc.delete_shopping_bag(GetGoodsInfoList, LoginData, AddGoodsResp) + ymc.delete_shopping_bag(GetGoodsInfoList, LoginData, AddGoodsResp) 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:请求订单结算") - self.ymc.request_order_settlement(LoginData) + ymc.request_order_settlement(LoginData) else: - LOGGER.info(f"---商品 {self.shoppingbag_max} 不存在") - pytest.fail(f"---商品 {self.shoppingbag_max} 不存在") + pytest.fail(f"---商品 {shoppingbag_max} 不存在") else: - LOGGER.info(f"---商品 {self.shoppingbag_mid} 不存在") - pytest.fail(f"---商品 {self.shoppingbag_mid} 不存在") + pytest.fail(f"---商品 {shoppingbag_mid} 不存在") if __name__ == '__main__': diff --git a/YiMao/scripts/BusiScenarios/test_CAnon009_ReturnPurchaseOfOrdinaryGoods.py b/YiMao/scripts/BusiScenarios/test_CAnon009_ReturnPurchaseOfOrdinaryGoods.py index 351b7b8..74e70ef 100644 --- a/YiMao/scripts/BusiScenarios/test_CAnon009_ReturnPurchaseOfOrdinaryGoods.py +++ b/YiMao/scripts/BusiScenarios/test_CAnon009_ReturnPurchaseOfOrdinaryGoods.py @@ -3,13 +3,12 @@ # @Author:: Arthur Wu # @Description:: 游客登录,加购2个普通商品,退购一个,并结算 # @Date:: 2024/11/20 -import unittest,allure,time,pytest -from configs.globalObj import LOGGER +import unittest,allure,time,pytest,ddt from YiMao.businessFunc.ClientApiLib import YMClientApi -from YiMao.data.WuShangSceneTestData import * - - +from configs.globalParams import DataInit DescName = "Anon009-非会员,加购2个普通商品,退购一个,并结算" + +@ddt.ddt @allure.story(f'[场景测试] {DescName}验证') class Test_CAnon009(unittest.TestCase): f'''@Date:: 2024/11/20 @@ -18,46 +17,44 @@ class Test_CAnon009(unittest.TestCase): [购物车客户端] {DescName} 1、武商测试环境,2个普通商品 inputcode 分别为: ''' - def setUp(self) -> None: - self.timestamp = int(time.time()) - self.ymc = YMClientApi(ShoppingCartMac) - self.goods_01 = NormalGoodsInputcode01 - self.goods_02 = NormalGoodsInputcode02 - - def test_CAnon009_ReturnPurchaseOfOrdinaryGoods(self): + @ddt.data(*DataInit) + def test_CAnon009_ReturnPurchaseOfOrdinaryGoods(self, data): allure.dynamic.description(f"描述:{DescName}") + ymc = YMClientApi(data["ShoppingCartMac"]) + goods_01 = data["NormalGoods"]["goods01"] + goods_02 = data["NormalGoods"]["goods02"] + allure.step("步骤1:session开始") - self.ymc.session_start() + ymc.session_start() allure.step("步骤2:匿名登录") Payload01 = {"action": 0, "isAnon": True} - LoginData = self.ymc.login_app_v2(Payload01) + LoginData = ymc.login_app_v2(Payload01) '''step1:加购商品x,分别加购x件''' 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'] != '加购商品不存在': 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信息") - GetGoodsInfoResp_02 = self.ymc.get_goods_info(InputCode=self.goods_02) + GetGoodsInfoResp_02 = ymc.get_goods_info(InputCode=goods_02) if GetGoodsInfoResp_02['msg'] != '加购商品不存在': allure.step("步骤6:添加商品2") - AddGoodsResp = self.ymc.add_cart_goods(GetGoodsInfoResp_02, 1, LoginData) + AddGoodsResp = ymc.add_cart_goods(GetGoodsInfoResp_02, 1, LoginData) ''' step2:随机退购一个商品,并结算 ''' allure.step("\n步骤7:退购一件商品") 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:获取购物车商品信息") - self.ymc.get_cart_goods_info([GetGoodsInfoResp_01, GetGoodsInfoResp_02]) + ymc.get_cart_goods_info([GetGoodsInfoResp_01, GetGoodsInfoResp_02]) allure.step("步骤9:请求订单结算") - self.ymc.request_order_settlement(LoginData) + ymc.request_order_settlement(LoginData) else: - LOGGER.info(f"---商品 {self.goods_02} 不存在") - pytest.fail(f"---商品 {self.goods_02} 不存在") + pytest.fail(f"---商品 {goods_02} 不存在") else: - LOGGER.info(f"---商品 {self.goods_01} 不存在") - pytest.fail(f"---商品 {self.goods_01} 不存在") + pytest.fail(f"---商品 {goods_01} 不存在") if __name__ == '__main__': diff --git a/YiMao/scripts/BusiScenarios/test_CAnon010_ReturnOfMemberProducts.py b/YiMao/scripts/BusiScenarios/test_CAnon010_ReturnOfMemberProducts.py index 9628aef..c251a86 100644 --- a/YiMao/scripts/BusiScenarios/test_CAnon010_ReturnOfMemberProducts.py +++ b/YiMao/scripts/BusiScenarios/test_CAnon010_ReturnOfMemberProducts.py @@ -3,13 +3,13 @@ # @Author:: Arthur Wu # @Description:: 游客登录,加购2个会员商品,退购一个,并结算 # @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.data.WuShangSceneTestData import * - - +from configs.globalParams import DataInit DescName = "Anon010-非会员,加购2个会员商品,退购一个,并结算" + +@ddt.ddt @allure.story(f'[场景测试] {DescName}验证') class Test_CAnon010(unittest.TestCase): f'''@Date:: 2024/11/20 @@ -18,46 +18,65 @@ class Test_CAnon010(unittest.TestCase): [购物车客户端] {DescName} 1、武商测试环境,2个会员商品 inputcode 分别为: ''' - def setUp(self) -> None: - self.timestamp = int(time.time()) - self.ymc = YMClientApi(ShoppingCartMac) - self.vip_goods_01 = VipGoodsInputcode - self.vip_goods_02 = VipGoodsInputcode02 - - def test_CAnon010_ReturnOfMemberProducts(self): + @ddt.data(*DataInit) + def test_CAnon010_ReturnOfMemberProducts(self, data): allure.dynamic.description(f"描述:{DescName}") + ymc = YMClientApi(data["ShoppingCartMac"]) + vip_goods_01 = data["VipGoods"]["goods01"] + vip_goods_02 = data["VipGoods"]["goods02"] + allure.step("步骤1:session开始") - self.ymc.session_start() + ymc.session_start() allure.step("步骤2:匿名登录") Payload01 = {"action": 0, "isAnon": True} - LoginData = self.ymc.login_app_v2(Payload01) + LoginData = ymc.login_app_v2(Payload01) '''step1:加购商品x,分别加购x件''' 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'] != '加购商品不存在': 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信息") - 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'] != '加购商品不存在': 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:随机退购一个商品,并结算 ''' allure.step("\n步骤7:退购一件商品") 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:获取购物车商品信息") - self.ymc.get_cart_goods_info([GetGoodsInfoResp_01, GetGoodsInfoResp_02]) + ymc.get_cart_goods_info(cart_goods_info) allure.step("步骤9:请求订单结算") - self.ymc.request_order_settlement(LoginData) + ymc.request_order_settlement(LoginData) else: - LOGGER.info(f"---商品 {self.vip_goods_02} 不存在") - pytest.fail(f"---商品 {self.vip_goods_02} 不存在") + pytest.fail(f"---商品 {vip_goods_02} 不存在") else: - LOGGER.info(f"---商品 {self.vip_goods_01} 不存在") - pytest.fail(f"---商品 {self.vip_goods_01} 不存在") + pytest.fail(f"---商品 {vip_goods_01} 不存在") if __name__ == '__main__': diff --git a/YiMao/scripts/BusiScenarios/test_CVip019_ReceiveCoupon.py b/YiMao/scripts/BusiScenarios/test_CVip019_ReceiveCoupon.py new file mode 100644 index 0000000..9ffab94 --- /dev/null +++ b/YiMao/scripts/BusiScenarios/test_CVip019_ReceiveCoupon.py @@ -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("步骤1:session开始") + 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) \ No newline at end of file diff --git a/commons/Common.py b/commons/Common.py index 86dc12f..38cd1a1 100644 --- a/commons/Common.py +++ b/commons/Common.py @@ -44,3 +44,6 @@ class Common(): return str(timestamp_milliseconds) + + + diff --git a/commons/EngineX.py b/commons/EngineX.py index cfe6162..a4611f6 100644 --- a/commons/EngineX.py +++ b/commons/EngineX.py @@ -98,8 +98,8 @@ class NotificationModule(): "Debug": "7aedbee7239870e3e653748a2889d8bf063c61efa9213c7099bd57476066dc86", "Formal": "80b026022a28166cfc9eebaf8f6a880cc06f56a14b8803e8d67e7fb3cb05844e" } - # self.urlInfo = datainfo["Domain"] + datainfo["Debug"] - self.urlInfo = datainfo["Domain"] + datainfo["Formal"] + self.urlInfo = datainfo["Domain"] + datainfo["Debug"] + # self.urlInfo = datainfo["Domain"] + datainfo["Formal"] self.ReportUrl = ProCfgData["ReportsURL"] self.ExecutionEnvironment = ProCfgData["ExecutionEnv"] diff --git a/commons/FileHandler.py b/commons/FileHandler.py index ec12386..cd04e53 100644 --- a/commons/FileHandler.py +++ b/commons/FileHandler.py @@ -13,7 +13,20 @@ class YamlHandler(): return yaml.load(f.read(), Loader=yaml.FullLoader) except Exception as 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): '''@Author:: Arthur Wu diff --git a/configs/Configs.yaml b/configs/Configs.yaml index f905d54..9e17b92 100644 --- a/configs/Configs.yaml +++ b/configs/Configs.yaml @@ -10,3 +10,6 @@ ExecutionScope: YMBusiScenarios # 3-Reports URL ReportsURL: http://192.168.1.165 +# 4-联测测试的商超列表: WuShang\ZhongBai\YongHui\JiajiaYue +MarketsArray: + - ZhongBai \ No newline at end of file diff --git a/configs/globalParams.py b/configs/globalParams.py index cb325c5..7729498 100644 --- a/configs/globalParams.py +++ b/configs/globalParams.py @@ -4,8 +4,6 @@ import os,datetime,time from datetime import datetime,timedelta from commons.FileHandler import YamlHandler as yam from commons.SignatureYM import SignatureYM - - __RootPath = os.path.dirname(os.path.dirname(__file__)).replace("\\", "/") __YamlFilePath = os.path.join(__RootPath, "configs/Configs.yaml").replace("\\", "/") ProCfgData = yam().read_yaml(__YamlFilePath) @@ -29,7 +27,16 @@ GlobalParams = { "todayDateAdd4": (datetime.now() + timedelta(days=4)).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}")