From 0cf0c9d8f7cbfc8027ccfda44ebbedf2a568cf8f Mon Sep 17 00:00:00 2001 From: ieemoo Date: Fri, 22 Nov 2024 17:54:06 +0800 Subject: [PATCH] Arthur-Wu committed this file on 2024-11-21 --- YiMao/ZeroLib/test_CAnon016_.py | 5 - YiMao/ZeroLib/test_CAnon017_.py | 5 - YiMao/ZeroLib/test_CAnon018_.py | 5 - YiMao/ZeroLib/test_CAnon019_.py | 64 ++++++++++++- YiMao/ZeroLib/test_CVip015_.py | 5 - YiMao/ZeroLib/test_CVip016_.py | 5 - YiMao/ZeroLib/test_CVip017_.py | 5 - YiMao/ZeroLib/test_CVip018_.py | 5 - YiMao/ZeroLib/test_CVip019_.py | 2 +- YiMao/businessFunc/ClientApiLib.py | 23 +++-- YiMao/businessFunc/ServiceApiLib.py | 90 +++++++++++++++++- YiMao/data/WuShangSceneTestData.py | 2 +- YiMao/data/前后端联测业务场景梳理.xlsx | Bin 12900 -> 12809 bytes ...002_AddNonDiscountedProductsForPurchase.py | 2 +- ...t_CAnon003_AddMemberProductsForPurchase.py | 3 +- ...st_CAnon004_AddMultipleItemsForPurchase.py | 4 +- ...non005_AddDiscountedProductsForPurchase.py | 3 +- ...Anon006_AddPromotionalWhitelistProducts.py | 1 - .../test_CAnon007_AddWeightToTheProduct.py | 1 - .../test_CAnon008_ReturnShoppingBag.py | 4 +- ..._CAnon009_ReturnPurchaseOfOrdinaryGoods.py | 4 +- .../test_CAnon010_ReturnOfMemberProducts.py | 4 +- ...n011_ReturnOneItemFromMultiplePurchases.py | 4 +- ...est_CAnon012_ReturnOfDiscountedProducts.py | 2 +- ...non013_ReturnPromotionWhitelistProducts.py | 9 +- ...test_CAnon014_ReturnWeightOfTheProducte.py | 7 +- ...non015_AddPieceRateProductsForPurchase.py} | 31 +++--- ...on016_AddPieceRateProductsAndReturnThem.py | 55 +++++++++++ ...on017_AddWeightBasedProductsForPurchase.py | 47 +++++++++ ...n018_PurchaseWeightedGoodsAndReturnThem.py | 55 +++++++++++ .../test_CNoLogin001_CheckADs.py | 18 ++-- ..._CVip001_AddShoppingBagAndSettlePayment.py | 3 +- ...002_AddNonDiscountedProductsForPurchase.py | 4 +- ...st_CVip003_AddMemberProductsForPurchase.py | 5 +- ...est_CVip004_AddMultipleItemsForPurchase.py | 8 +- ...Vip005_AddDiscountedProductsForPurchase.py | 5 +- ...CVip006_AddPromotionalWhitelistProducts.py | 5 +- .../test_CVip007_AddWeightToTheProduct.py | 5 +- .../test_CVip008_ReturnShoppingBag.py | 8 +- ...t_CVip009_ReturnPurchaseOfOrdinaryGoods.py | 8 +- .../test_CVip010_ReturnOfMemberProducts.py | 8 +- ...p011_ReturnOneItemFromMultiplePurchases.py | 8 +- ...test_CVip012_ReturnOfDiscountedProducts.py | 4 +- ...Vip013_ReturnPromotionWhitelistProducts.py | 11 +-- .../test_CVip014_ReturnWeightOfTheProducte.py | 13 ++- ...CVip015_AddPieceRateProductsForPurchase.py | 53 +++++++++++ ...ip016_AddPieceRateProductsAndReturnThem.py | 61 ++++++++++++ ...ip017_AddWeightBasedProductsForPurchase.py | 53 +++++++++++ ...p018_PurchaseWeightedGoodsAndReturnThem.py | 61 ++++++++++++ commons/SignatureYM.py | 2 +- 50 files changed, 641 insertions(+), 154 deletions(-) delete mode 100644 YiMao/ZeroLib/test_CAnon016_.py delete mode 100644 YiMao/ZeroLib/test_CAnon017_.py delete mode 100644 YiMao/ZeroLib/test_CAnon018_.py delete mode 100644 YiMao/ZeroLib/test_CVip015_.py delete mode 100644 YiMao/ZeroLib/test_CVip016_.py delete mode 100644 YiMao/ZeroLib/test_CVip017_.py delete mode 100644 YiMao/ZeroLib/test_CVip018_.py rename YiMao/{ZeroLib/test_CAnon015_.py => scripts/BusiScenarios/test_CAnon015_AddPieceRateProductsForPurchase.py} (51%) create mode 100644 YiMao/scripts/BusiScenarios/test_CAnon016_AddPieceRateProductsAndReturnThem.py create mode 100644 YiMao/scripts/BusiScenarios/test_CAnon017_AddWeightBasedProductsForPurchase.py create mode 100644 YiMao/scripts/BusiScenarios/test_CAnon018_PurchaseWeightedGoodsAndReturnThem.py create mode 100644 YiMao/scripts/BusiScenarios/test_CVip015_AddPieceRateProductsForPurchase.py create mode 100644 YiMao/scripts/BusiScenarios/test_CVip016_AddPieceRateProductsAndReturnThem.py create mode 100644 YiMao/scripts/BusiScenarios/test_CVip017_AddWeightBasedProductsForPurchase.py create mode 100644 YiMao/scripts/BusiScenarios/test_CVip018_PurchaseWeightedGoodsAndReturnThem.py diff --git a/YiMao/ZeroLib/test_CAnon016_.py b/YiMao/ZeroLib/test_CAnon016_.py deleted file mode 100644 index 985eed3..0000000 --- a/YiMao/ZeroLib/test_CAnon016_.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/ZeroLib/test_CAnon017_.py b/YiMao/ZeroLib/test_CAnon017_.py deleted file mode 100644 index 04436de..0000000 --- a/YiMao/ZeroLib/test_CAnon017_.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/ZeroLib/test_CAnon018_.py b/YiMao/ZeroLib/test_CAnon018_.py deleted file mode 100644 index e18a3ce..0000000 --- a/YiMao/ZeroLib/test_CAnon018_.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/ZeroLib/test_CAnon019_.py b/YiMao/ZeroLib/test_CAnon019_.py index 6326b67..b631a56 100644 --- a/YiMao/ZeroLib/test_CAnon019_.py +++ b/YiMao/ZeroLib/test_CAnon019_.py @@ -1,5 +1,65 @@ # !/usr/bin/python # -*- coding: utf-8 -*- # @Author:: Arthur Wu -# @Description:: 加购1件重量待核验商品,无法结算 -# @Date:: 2024/11/21 +# @Description:: 匿名登录,加购1件重量待核验商品,无法结算 +# @Date:: 2024/11/22 +import unittest,allure,time,pytest +from configs.globalObj import LOGGER +from YiMao.businessFunc.ClientApiLib import YMClientApi +from YiMao.data.WuShangSceneTestData import * + + +DescName = "Anon019-匿名登录,加购1件重量待核验商品,无法结算" +@allure.story(f'[场景测试] {DescName}验证') +class Test_CAnon019(unittest.TestCase): + f'''@Date:: 2024/11/15 + @Author:: Arthur Wu + @Desc:: + [购物车客户端] {DescName} + ''' + def setUp(self) -> None: + self.timestamp = int(time.time()) + self.ymc = YMClientApi(ShoppingCartMac) + self.piece_rate_goods = PieceRateGoods["GoodsInputcode"] + + def test_CAnon019(self): + allure.dynamic.description(f"描述:{DescName}\n") + 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:获取商品信息") + GetGoodsInfoResp_01 = self.ymc.get_goods_info(self.piece_rate_goods) + if GetGoodsInfoResp_01['msg'] != '加购商品不存在': + allure.step("步骤4:添加会员有优惠商品") + AddGoodsResp = self.ymc.add_cart_goods(GetGoodsInfoResp_01, 1, LoginData) + + # allure.step("\n步骤5:退购一件商品") + # GetGoodsInfoList = [GetGoodsInfoResp_01] + # self.ymc.delete_cart_goods(GetGoodsInfoList, LoginData, AddGoodsResp) + + allure.step("步骤6:获取购物车商品信息") + LOGGER.info(f"---获取购物车商品信息-1") + self.ymc.get_cart_goods_info([GetGoodsInfoResp_01]) + allure.step("步骤7:请求订单结算") + LOGGER.info(f"---请求订单结算-1") + self.ymc.request_order_settlement(LoginData) + + allure.step("步骤8:核验商品") + self.ymc.verify_the_goods_through_verification() + + allure.step("步骤6:获取购物车商品信息") + LOGGER.info(f"---获取购物车商品信息-2") + self.ymc.get_cart_goods_info([GetGoodsInfoResp_01]) + allure.step("步骤7:请求订单结算") + LOGGER.info(f"---请求订单结算-2") + self.ymc.request_order_settlement(LoginData) + + else: + LOGGER.info(f"---商品 {PieceRateGoods} 不存在") + pytest.fail(f"---商品 {PieceRateGoods} 不存在") + + +if __name__ == '__main__': + unittest.main(verbosity=2) \ No newline at end of file diff --git a/YiMao/ZeroLib/test_CVip015_.py b/YiMao/ZeroLib/test_CVip015_.py deleted file mode 100644 index 1632c67..0000000 --- a/YiMao/ZeroLib/test_CVip015_.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/ZeroLib/test_CVip016_.py b/YiMao/ZeroLib/test_CVip016_.py deleted file mode 100644 index 985eed3..0000000 --- a/YiMao/ZeroLib/test_CVip016_.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/ZeroLib/test_CVip017_.py b/YiMao/ZeroLib/test_CVip017_.py deleted file mode 100644 index 04436de..0000000 --- a/YiMao/ZeroLib/test_CVip017_.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/ZeroLib/test_CVip018_.py b/YiMao/ZeroLib/test_CVip018_.py deleted file mode 100644 index e18a3ce..0000000 --- a/YiMao/ZeroLib/test_CVip018_.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/ZeroLib/test_CVip019_.py b/YiMao/ZeroLib/test_CVip019_.py index 6326b67..1c358d3 100644 --- a/YiMao/ZeroLib/test_CVip019_.py +++ b/YiMao/ZeroLib/test_CVip019_.py @@ -2,4 +2,4 @@ # -*- coding: utf-8 -*- # @Author:: Arthur Wu # @Description:: 加购1件重量待核验商品,无法结算 -# @Date:: 2024/11/21 +# @Date:: 2024/11/22 diff --git a/YiMao/businessFunc/ClientApiLib.py b/YiMao/businessFunc/ClientApiLib.py index 2680be2..8b787bd 100644 --- a/YiMao/businessFunc/ClientApiLib.py +++ b/YiMao/businessFunc/ClientApiLib.py @@ -12,13 +12,11 @@ class YMClientApi(object): self.Domain = "https://api.test.yimaogo.com/cart" self.headerss = SignatureYM2(ShoppingCartMac)._headers() - ''' 1- without sessionid ''' def get_ads_list(self): logging.info("========== [获取广告列表] get_ads_list ==========") ''' method 1 ''' payload = {} url = self.Domain + "/v1/ads/list?areaCode&userId&barcode&adsAreaIds=1,2,3,4,5,6" - logging.info(f"---url: {url}---") logging.info(f"---headers: {self.headerss}---") response = requests.request("GET", url, headers=self.headerss, data=payload) logging.info(f"-----------接口返回状态码:{response.status_code}") @@ -34,7 +32,6 @@ class YMClientApi(object): logging.info(f"-----------接口返回数据:{response.json()}\n\n") return response.json() - ''' 2- sessionid must be started first ''' def session_start(self): logging.info("========== [前置] session_start ==========") url = self.Domain+"/v1/session/start" @@ -80,6 +77,7 @@ class YMClientApi(object): logging.info("========== [获取商品信息] get_goods_info ==========") payload = {} url = self.Domain+"/v2/shopping/{inputCode}".replace("{inputCode}", str(InputCode)) + logging.info(f"\n-----------获取商品信息url:{url}\n") response = requests.request("GET", url, headers=self.headerss, data=payload) logging.info(f"-----------接口返回状态码:{response.status_code}") logging.info(f"-----------接口返回数据:{response.json()}\n\n") @@ -101,7 +99,6 @@ class YMClientApi(object): "orderNo": LoginData["data"][0]["orderNo"] }, indent=4, ensure_ascii=False) url = self.Domain+"/v2/shopping/add/retire/purchase" - logging.info(f"---加购商品请求体payload: {payload}---") response = requests.request("POST", url, headers=self.headerss, data=payload) logging.info(f"-----------接口返回状态码:{response.status_code}") logging.info(f"-----------接口返回数据:{response.json()}\n\n") @@ -247,10 +244,11 @@ class YMClientApi(object): for goods_data in GoodsDataList: goods_dict = {} goods_dict["inputCode"] = goods_data["data"]["inputCode"] - goods_dict["qty"] = goods_data["data"]["qty"] + 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}) + payload = json.dumps({"goodsParamList": goods_param_lList}, 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) logging.info(f"-----------接口返回状态码:{response.status_code}") @@ -270,6 +268,19 @@ class YMClientApi(object): logging.info(f"-----------接口返回数据:{response.json()}\n\n") return response.json() + def verify_the_goods_through_verification(self): + logging.info("========== [验证商品通过验货] ==========") + payload = json.dumps({ + "manualId": 65, + "type": 1, + "barcodes": [] + }) + url = self.Domain+"/v1/check/goods/update" + 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 __name__ == '__main__': diff --git a/YiMao/businessFunc/ServiceApiLib.py b/YiMao/businessFunc/ServiceApiLib.py index 45817e9..ac2ea4f 100644 --- a/YiMao/businessFunc/ServiceApiLib.py +++ b/YiMao/businessFunc/ServiceApiLib.py @@ -14,7 +14,6 @@ class YMServiceApi(object): self.Domain = "https://api.test.yimaogo.com/" self.headerss = SignatureYM().return_headers() - ''' 1-广告模块 ''' def publish_ad(self, ADDetailList, MarketAndStoreDetail): logging.info("========== [发布广告] ==========") def __publish(ADDetail, MarketAndStoreDetail): @@ -111,11 +110,92 @@ class YMServiceApi(object): logging.info(f"---接口返回状态码为:: {response.status_code}") logging.info(f"---接口返回体为:: {response.json()}\n\n") + def approved_abnormal_products(self, MarketAndStoreInfo): + logging.info("========== [审核通过异常商品] ==========") + auth_token_b = self.headerss["Authorization"] + print(f"-----------headerss:: \n{self.headerss}\n") + print(f"-----------auth_token_b:: \n{auth_token_b}\n") + print(f"-----------auth_token_b:: \n{type(auth_token_b)}\n") + + # 1-查询 + url = self.Domain + "admin/check_goods/list" + get_abnormal_list_payload = json.dumps({ + "page": 1, + "limit": 10, + "query": { + "order": {"createdAt": "desc"}, + "where": { + "marketId": {"eq": MarketAndStoreInfo["putMarketId"]}, + "storeId": {"eq": MarketAndStoreInfo["putStoreId"][0]}, + "sessionState": {"in": [1, 2, 3, 4, 5, 6, 7]}, + "state": {"eq": 0} + } + } + }) + abnormal_list_resp = requests.request("POST", url, + headers=self.headerss, data=get_abnormal_list_payload) + print(f"-----------查询异常待处理商品返回结果为:: \n{abnormal_list_resp.json()}\n\n") + logging.info(f"-----------接口返回状态码:{abnormal_list_resp.status_code}") + logging.info(f"-----------接口返回数据:{abnormal_list_resp.json()}\n\n") + if abnormal_list_resp.json()["data"]["data"] != []: + abnormal_id = abnormal_list_resp.json()["data"]["data"][0]["id"] + num_val = abnormal_list_resp.json()["data"]["data"][0]["num"] + # 2-审核通过 + # url2 = self.Domain + ( + url2 = ('https://api.test.yimaogo.com/' + ( + "admin/check_goods/change/state/" + "{abnormal_id}?state=1&num={Num}&update=true&promotion=false" + # "{abnormal_id}" + ).replace("{abnormal_id}", str(abnormal_id)). + replace("{Num}", str(num_val))) + # print(f"-----------headers:: \n{self.headerss}\n") + print(f"-----------url2:: \n{url2}\n") + + try: + auth_token_b = self.headerss["Authorization"] + auth_token_c = 'Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6ImNlcnQtYnVpbHQtaW4iLCJ0eXAiOiJKV1QifQ.eyJhdWQiOlsiOTU1Nzk3NjVlNGZlOTFhZjk5NjIiXSwiYXZhdGFyIjoiaHR0cHM6Ly9zdGF0aWMtbGVnYWN5LmRpbmd0YWxrLmNvbS9tZWRpYS9sQURQRDRQdkgxQ0Z6R1BOQWd6TkFlQV80ODBfNTI0LmpwZyIsImRpc3BsYXlOYW1lIjoi5ZC05Zu95b69IiwiZW1haWwiOiJ3dWd1b2h1aUBpZWVtb28uY29tIiwiZXhwIjoxNzMyODQzODQxLCJpYXQiOjE3MzIyMzkwNDEsImlkIjoiUTJwcVJlVjNQRUViaVM5OGlTaVA4ZUVDZ2lFaUUiLCJpc3MiOiJodHRwczovL2F1dGgueWltYW9nby5jb20iLCJqdGkiOiJhZG1pbi9iZjk0MDFhMi1mZDIxLTRjODgtOWZkMS0yNGVlZWM0MjdmMmYiLCJuYW1lIjoiMDI5NiIsIm5iZiI6MTczMjIzOTA0MSwibm9uY2UiOiIiLCJvd25lciI6ImllZW1vbyIsInNjb3BlIjoicHJvZmlsZSIsInN1YiI6IlEycHFSZVYzUEVFYmlTOThpU2lQOGVFQ2dpRWlFIiwidGFnIjoiIiwidG9rZW5UeXBlIjoiYWNjZXNzLXRva2VuIn0.MEXmbdk3QOitECq7K4qG5BOy0K7pecJxTQVNrJq8a5VllNLTmfnsCWs_UswiF4-hrf7KvMj71TKI3xcMLPZDPTYee4LKi3npXrSHtuF9yWef9xY3841KEDHUc_RwNMlqFukVWIH3c-TL3M5XVqvY_ccqxPVG00ArRuXemkFsF7YoOsBzqMBR5oZdTw4vdZBjv07vXPvX-D8oQ1AR2Ib4jZxifBCwGB00GqFrQaNKGTuzaEo_nAXiZ3Xd6GBO5GywBIZ6-60J9PSf4VTZzKdxM16DoQoRrZUzLgxVmuxYo1g9OrQt3FQEPH2GwiPRRNezZKOCJOkU5MY-ZbxAizK5OkFn96ozbkiTKDqlUfkPASZWWX2XgVTLdaoRVltBIGDI03OzOJgiN4ogmz4uOyfeAxmgNPYyFoCclS3rKyCAWNPthY4R5R-AmkZAr1Lpu2NkSlxpCAiDLuzITE2POaG2XFGpAfn2OYeSJWxJhx2twOSFwu4zG4-yGD_AiQKXuxpYpLQbFfIL3d3sJ9dM8Wom4nTdh4rQDWVT0ed1Pc77NxSqMWlAviszaGU_V9deY-JqmtOwvw4p7lmAmr4yeB_-7fdKTXfGyEj9zy863Mzj9zZlPVr-ZB6RjvgqI8YK8A1g-ggjRL5OFOwVt2SP59qrAkUfpgAQXj1vN_ias1LhlJU', + + print(f"-----------auth_token_c:: \n{auth_token_b}\n") + print(f"-----------auth_token_c:: \n{type(auth_token_b)}\n") + # payload = "" + # headers = { + # 'Authorization': str(auth_token_c[0]), + # 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36', + # 'authority': 'api.test.yimaogo.com', + # 'Accept': '*/*', + # 'Origin': 'https://dashboard.test.yimaogo.com', + # 'Referer': 'https://dashboard.test.yimaogo.com/', + # 'sec-ch-ua': '"Google Chrome";v="131", "Chromium";v="131", "Not_A Brand";v="24"', + # 'Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8', + # 'Date': 'Fri, 22 Nov 2024 07:28:39 GMT', + # 'server': 'APISIX/3.8.0', + # 'Content-Type': 'application/json', + # 'Host': 'api.test.yimaogo.com', + # 'Connection': 'keep-alive' + # } + # time.sleep(1) + # response = requests.request("GET", url2, headers=headers, data=payload) + # response.raise_for_status() # 检查请求是否成功 + # logging.info(f"-----------接口返回状态码:{response.status_code}") + # logging.info(f"-----------接口返回数据:{response.json()}\n\n") + # print(f"-----------接口返回数据:\n{response.json()}\n\n") + except requests.exceptions.RequestException as e: + logging.error(f"请求失败: {e}") + + # if response.json()["msg"] == '成功': + # logging.info("---审核通过异常商品成功!") + # else: + # logging.error("---审核通过异常商品失败!") + # else: + # logging.info("---未查询到待核验的异常商品!") + + + + + if __name__ == '__main__': yms = YMServiceApi() GoodsInfo = {"GoodsInputcode": "6924743915848"} - MarketAndStoreInfo = {"MarketId": 50, "StoreId": 29} - yms.add_weight_to_whitelist(GoodsInfo, MarketAndStoreInfo) - time.sleep(10) - yms.delete_weight_whitelist_goods() \ No newline at end of file + MarketAndStoreDetails = {"putMarketId": 50, "putStoreId": ["69"]} + yms.approved_abnormal_products(MarketAndStoreDetails) \ No newline at end of file diff --git a/YiMao/data/WuShangSceneTestData.py b/YiMao/data/WuShangSceneTestData.py index a1f4fb2..9452d1b 100644 --- a/YiMao/data/WuShangSceneTestData.py +++ b/YiMao/data/WuShangSceneTestData.py @@ -42,7 +42,7 @@ SaleGoodsInputCode = "9588856298051" # 濠品轩燕麦酥 PromotionalWhitelistGoods = {"GoodsInputcode": "9588856298051", "GoodsName": "濠品轩燕麦酥"} ''' -重量放通白名单 ''' WeightToWhitelistGoods = {"GoodsInputcode": "6922024730036", "GoodsName": "大白兔奶糖"} -''' -散称商品 ''' +''' -散称计重商品 ''' BulkGoods = {"GoodsInputcode": "2934431009517", "GoodsName": "阿克苏苹果"} ''' -计件商品 ''' PieceRateGoods = {"GoodsInputcode": "2910551005806", "GoodsName": "优选大白菜秧"} diff --git a/YiMao/data/前后端联测业务场景梳理.xlsx b/YiMao/data/前后端联测业务场景梳理.xlsx index 822c6480060bb5c2ce6250d38605ea1c736c0a27..0b18aa2b494d1bc477510e6c115f8602282b3eae 100644 GIT binary patch delta 7097 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 NHGcd@=3IZF{{xh;fye*= delta 7218 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 pA2U5jY@FJ@4PE{{@>$uCf3C diff --git a/YiMao/scripts/BusiScenarios/test_CAnon002_AddNonDiscountedProductsForPurchase.py b/YiMao/scripts/BusiScenarios/test_CAnon002_AddNonDiscountedProductsForPurchase.py index 5a7205d..2099348 100644 --- a/YiMao/scripts/BusiScenarios/test_CAnon002_AddNonDiscountedProductsForPurchase.py +++ b/YiMao/scripts/BusiScenarios/test_CAnon002_AddNonDiscountedProductsForPurchase.py @@ -22,7 +22,7 @@ class Test_CAnon002(unittest.TestCase): def setUp(self) -> None: self.timestamp = int(time.time()) self.ymc = YMClientApi(ShoppingCartMac) - self.NormalGoodsInputcode01 = NormalGoodsInputcode01 # 乐事薯片 + self.NormalGoodsInputcode01 = NormalGoodsInputcode01 def test_CAnon002_AddNonDiscountedProductsForPurchase(self): allure.dynamic.description(f"描述:{DescName}") diff --git a/YiMao/scripts/BusiScenarios/test_CAnon003_AddMemberProductsForPurchase.py b/YiMao/scripts/BusiScenarios/test_CAnon003_AddMemberProductsForPurchase.py index f494e09..b4a3a81 100644 --- a/YiMao/scripts/BusiScenarios/test_CAnon003_AddMemberProductsForPurchase.py +++ b/YiMao/scripts/BusiScenarios/test_CAnon003_AddMemberProductsForPurchase.py @@ -22,8 +22,7 @@ class Test_CAnon003(unittest.TestCase): def setUp(self) -> None: self.timestamp = int(time.time()) self.ymc = YMClientApi(ShoppingCartMac) - # 会员有优惠商品暂未提供 - self.vip_goods_inputcode = VipGoodsInputcode # 统一番茄牛肉面 + self.vip_goods_inputcode = VipGoodsInputcode def test_CAnon003_AddMemberProductsForPurchase(self): allure.dynamic.description(f"描述:{DescName}") diff --git a/YiMao/scripts/BusiScenarios/test_CAnon004_AddMultipleItemsForPurchase.py b/YiMao/scripts/BusiScenarios/test_CAnon004_AddMultipleItemsForPurchase.py index 0b64614..4cd59cc 100644 --- a/YiMao/scripts/BusiScenarios/test_CAnon004_AddMultipleItemsForPurchase.py +++ b/YiMao/scripts/BusiScenarios/test_CAnon004_AddMultipleItemsForPurchase.py @@ -21,8 +21,8 @@ class Test_CAnon004(unittest.TestCase): def setUp(self) -> None: self.timestamp = int(time.time()) self.ymc = YMClientApi(ShoppingCartMac) - self.goods_inputcode1 = NormalGoodsInputcode01 # 乐事薯片 - self.goods_inputcode2 = NormalGoodsInputcode02 # 统一番茄牛肉面 + self.goods_inputcode1 = NormalGoodsInputcode01 + self.goods_inputcode2 = NormalGoodsInputcode02 def test_CAnon004_AddMultipleItemsForPurchase(self): allure.dynamic.description(f"描述:{DescName}") diff --git a/YiMao/scripts/BusiScenarios/test_CAnon005_AddDiscountedProductsForPurchase.py b/YiMao/scripts/BusiScenarios/test_CAnon005_AddDiscountedProductsForPurchase.py index e35b0a0..376b091 100644 --- a/YiMao/scripts/BusiScenarios/test_CAnon005_AddDiscountedProductsForPurchase.py +++ b/YiMao/scripts/BusiScenarios/test_CAnon005_AddDiscountedProductsForPurchase.py @@ -22,8 +22,7 @@ class Test_CAnon005(unittest.TestCase): def setUp(self) -> None: self.timestamp = int(time.time()) self.ymc = YMClientApi(ShoppingCartMac) - # 折扣商品暂未提供 - self.sale_goods_inputCode = SaleGoodsInputCode # 乐事薯片 + self.sale_goods_inputCode = SaleGoodsInputCode def test_CAnon005_AddDiscountedProductsForPurchase(self): allure.dynamic.description(f"描述:{DescName}") diff --git a/YiMao/scripts/BusiScenarios/test_CAnon006_AddPromotionalWhitelistProducts.py b/YiMao/scripts/BusiScenarios/test_CAnon006_AddPromotionalWhitelistProducts.py index b926974..ccf8f83 100644 --- a/YiMao/scripts/BusiScenarios/test_CAnon006_AddPromotionalWhitelistProducts.py +++ b/YiMao/scripts/BusiScenarios/test_CAnon006_AddPromotionalWhitelistProducts.py @@ -24,7 +24,6 @@ class Test_CAnon006(unittest.TestCase): 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"], diff --git a/YiMao/scripts/BusiScenarios/test_CAnon007_AddWeightToTheProduct.py b/YiMao/scripts/BusiScenarios/test_CAnon007_AddWeightToTheProduct.py index 30c3b2b..da1c534 100644 --- a/YiMao/scripts/BusiScenarios/test_CAnon007_AddWeightToTheProduct.py +++ b/YiMao/scripts/BusiScenarios/test_CAnon007_AddWeightToTheProduct.py @@ -24,7 +24,6 @@ class Test_CAnon007(unittest.TestCase): 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"], diff --git a/YiMao/scripts/BusiScenarios/test_CAnon008_ReturnShoppingBag.py b/YiMao/scripts/BusiScenarios/test_CAnon008_ReturnShoppingBag.py index 8d7eada..fe21be7 100644 --- a/YiMao/scripts/BusiScenarios/test_CAnon008_ReturnShoppingBag.py +++ b/YiMao/scripts/BusiScenarios/test_CAnon008_ReturnShoppingBag.py @@ -21,8 +21,8 @@ class Test_CAnon008(unittest.TestCase): def setUp(self) -> None: self.timestamp = int(time.time()) self.ymc = YMClientApi(ShoppingCartMac) - self.shoppingbag_mid = GoodsBagInputcode_mid # 乐事薯片 - self.shoppingbag_max = GoodsBagInputcode_max # 统一番茄牛肉面 + self.shoppingbag_mid = GoodsBagInputcode_mid + self.shoppingbag_max = GoodsBagInputcode_max def test_CAnon008_ReturnShoppingBag(self): allure.dynamic.description(f"描述:{DescName}") diff --git a/YiMao/scripts/BusiScenarios/test_CAnon009_ReturnPurchaseOfOrdinaryGoods.py b/YiMao/scripts/BusiScenarios/test_CAnon009_ReturnPurchaseOfOrdinaryGoods.py index 2386470..351b7b8 100644 --- a/YiMao/scripts/BusiScenarios/test_CAnon009_ReturnPurchaseOfOrdinaryGoods.py +++ b/YiMao/scripts/BusiScenarios/test_CAnon009_ReturnPurchaseOfOrdinaryGoods.py @@ -21,8 +21,8 @@ class Test_CAnon009(unittest.TestCase): def setUp(self) -> None: self.timestamp = int(time.time()) self.ymc = YMClientApi(ShoppingCartMac) - self.goods_01 = NormalGoodsInputcode01 # 乐事薯片 - self.goods_02 = NormalGoodsInputcode02 # 统一番茄牛肉面 + self.goods_01 = NormalGoodsInputcode01 + self.goods_02 = NormalGoodsInputcode02 def test_CAnon009_ReturnPurchaseOfOrdinaryGoods(self): allure.dynamic.description(f"描述:{DescName}") diff --git a/YiMao/scripts/BusiScenarios/test_CAnon010_ReturnOfMemberProducts.py b/YiMao/scripts/BusiScenarios/test_CAnon010_ReturnOfMemberProducts.py index baa3d7c..9628aef 100644 --- a/YiMao/scripts/BusiScenarios/test_CAnon010_ReturnOfMemberProducts.py +++ b/YiMao/scripts/BusiScenarios/test_CAnon010_ReturnOfMemberProducts.py @@ -21,8 +21,8 @@ class Test_CAnon010(unittest.TestCase): def setUp(self) -> None: self.timestamp = int(time.time()) self.ymc = YMClientApi(ShoppingCartMac) - self.vip_goods_01 = VipGoodsInputcode # 乐事薯片 - self.vip_goods_02 = VipGoodsInputcode02 # 统一番茄牛肉面 + self.vip_goods_01 = VipGoodsInputcode + self.vip_goods_02 = VipGoodsInputcode02 def test_CAnon010_ReturnOfMemberProducts(self): allure.dynamic.description(f"描述:{DescName}") diff --git a/YiMao/scripts/BusiScenarios/test_CAnon011_ReturnOneItemFromMultiplePurchases.py b/YiMao/scripts/BusiScenarios/test_CAnon011_ReturnOneItemFromMultiplePurchases.py index d28d109..71c820f 100644 --- a/YiMao/scripts/BusiScenarios/test_CAnon011_ReturnOneItemFromMultiplePurchases.py +++ b/YiMao/scripts/BusiScenarios/test_CAnon011_ReturnOneItemFromMultiplePurchases.py @@ -21,8 +21,8 @@ class Test_CAnon011(unittest.TestCase): def setUp(self) -> None: self.timestamp = int(time.time()) self.ymc = YMClientApi(ShoppingCartMac) - self.goods_inputcode1 = NormalGoodsInputcode01 # 乐事薯片 - self.goods_inputcode2 = NormalGoodsInputcode02 # 统一番茄牛肉面 + self.goods_inputcode1 = NormalGoodsInputcode01 + self.goods_inputcode2 = NormalGoodsInputcode02 def test_CAnon011_ReturnOneItemFromMultiplePurchases(self): allure.dynamic.description(f"描述:{DescName}") diff --git a/YiMao/scripts/BusiScenarios/test_CAnon012_ReturnOfDiscountedProducts.py b/YiMao/scripts/BusiScenarios/test_CAnon012_ReturnOfDiscountedProducts.py index 8edaf6d..9c1dd29 100644 --- a/YiMao/scripts/BusiScenarios/test_CAnon012_ReturnOfDiscountedProducts.py +++ b/YiMao/scripts/BusiScenarios/test_CAnon012_ReturnOfDiscountedProducts.py @@ -21,7 +21,7 @@ class Test_CAnon012(unittest.TestCase): def setUp(self) -> None: self.timestamp = int(time.time()) self.ymc = YMClientApi(ShoppingCartMac) - self.sale_goods_inputCode = SaleGoodsInputCode # 乐事薯片 + self.sale_goods_inputCode = SaleGoodsInputCode def test_CAnon012_ReturnOfDiscountedProducts(self): allure.dynamic.description(f"描述:{DescName}") diff --git a/YiMao/scripts/BusiScenarios/test_CAnon013_ReturnPromotionWhitelistProducts.py b/YiMao/scripts/BusiScenarios/test_CAnon013_ReturnPromotionWhitelistProducts.py index 92065a1..9f91544 100644 --- a/YiMao/scripts/BusiScenarios/test_CAnon013_ReturnPromotionWhitelistProducts.py +++ b/YiMao/scripts/BusiScenarios/test_CAnon013_ReturnPromotionWhitelistProducts.py @@ -23,7 +23,6 @@ class Test_CAnon013(unittest.TestCase): 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"], @@ -69,15 +68,15 @@ class Test_CAnon013(unittest.TestCase): else: LOGGER.info(f"---商品 {self.promotional_whitelist_goods["GoodsInputcode"]} 不存在") pytest.fail(f"---商品 {self.promotional_whitelist_goods["GoodsInputcode"]} 不存在") - - allure.step("[后置处理]:删除添加的促销白名单商品") - self.yms.delete_whitelist_goods() else: LOGGER.info(f"---添加商品 {self.promotional_whitelist_goods['GoodsInputcode']} " f"到促销白名单失败") pytest.fail(f"---添加商品 {self.promotional_whitelist_goods['GoodsInputcode']} " - f"到促销白名单失败") + f"到促销白名单失败") + def tearDown(self) -> None: + allure.step("[后置处理]:删除添加的促销白名单商品") + self.yms.delete_whitelist_goods() if __name__ == '__main__': unittest.main(verbosity=2) \ No newline at end of file diff --git a/YiMao/scripts/BusiScenarios/test_CAnon014_ReturnWeightOfTheProducte.py b/YiMao/scripts/BusiScenarios/test_CAnon014_ReturnWeightOfTheProducte.py index e3a5dea..ac3dede 100644 --- a/YiMao/scripts/BusiScenarios/test_CAnon014_ReturnWeightOfTheProducte.py +++ b/YiMao/scripts/BusiScenarios/test_CAnon014_ReturnWeightOfTheProducte.py @@ -23,7 +23,6 @@ class Test_CAnon014(unittest.TestCase): 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"], @@ -69,15 +68,15 @@ class Test_CAnon014(unittest.TestCase): 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() else: LOGGER.info(f"---添加商品 {self.weight_to_whitelist_goods['GoodsInputcode']} " f"到重量放通白名单失败") pytest.fail(f"---添加商品 {self.weight_to_whitelist_goods['GoodsInputcode']} " f"到重量放通白名单失败") + def tearDown(self) -> None: + allure.step("[后置处理]:删除添加的重量放通白名单商品") + self.yms.delete_weight_whitelist_goods() if __name__ == '__main__': unittest.main(verbosity=2) \ No newline at end of file diff --git a/YiMao/ZeroLib/test_CAnon015_.py b/YiMao/scripts/BusiScenarios/test_CAnon015_AddPieceRateProductsForPurchase.py similarity index 51% rename from YiMao/ZeroLib/test_CAnon015_.py rename to YiMao/scripts/BusiScenarios/test_CAnon015_AddPieceRateProductsForPurchase.py index e652732..3fa949a 100644 --- a/YiMao/ZeroLib/test_CAnon015_.py +++ b/YiMao/scripts/BusiScenarios/test_CAnon015_AddPieceRateProductsForPurchase.py @@ -1,53 +1,46 @@ # !/usr/bin/python # -*- coding: utf-8 -*- # @Author:: Arthur Wu -# @Description:: 匿名加购计件商品,并结算 -# @Date:: 2024/11/21 +# @Description:: 匿名登录,加购计件商品,并结算 +# @Date:: 2024/11/22 import unittest,allure,time,pytest from configs.globalObj import LOGGER from YiMao.businessFunc.ClientApiLib import YMClientApi from YiMao.data.WuShangSceneTestData import * -DescName = "Anon015-匿名加购计件商品,并结算" +DescName = "Anon015-匿名登录加购计件商品,并结算" @allure.story(f'[场景测试] {DescName}验证') class Test_CAnon015(unittest.TestCase): - f'''@Date:: 2024/11/15 + f'''@Date:: 2024/11/22 @Author:: Arthur Wu @Desc:: [购物车客户端] {DescName} - 1、步骤 - 1)加购计件或计重商品,返回为待核验商品 - 2)点击结算,校验返回结果“不可结算” - 3)调用管理平台“待核验商品-审核通过”接口 - 4)点击结算,校验返回结果“可结算” ''' def setUp(self) -> None: self.timestamp = int(time.time()) self.ymc = YMClientApi(ShoppingCartMac) - # 会员有优惠商品暂未提供 - # self.vip_goods_inputcode = VipGoodsInputcode # 统一番茄牛肉面 - self.vip_goods_inputcode = "124312354" # 统一番茄牛肉面 + self.piece_rate_goods = PieceRateGoods["GoodsInputcode"] def test_CAnon015(self): - allure.dynamic.description(f"描述:{DescName}") + allure.dynamic.description(f"描述:{DescName}\n") 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.vip_goods_inputcode) - if GoodsInfoData['msg'] != '加购商品不存在': + GetGoodsInfoResp_01 = self.ymc.get_goods_info(self.piece_rate_goods) + if GetGoodsInfoResp_01['msg'] != '加购商品不存在': allure.step("步骤4:添加会员有优惠商品") - self.ymc.add_cart_goods(GoodsInfoData, 1, LoginData) + self.ymc.add_cart_goods(GetGoodsInfoResp_01, 1, LoginData) allure.step("步骤5:获取购物车商品信息") - self.ymc.get_cart_goods_info([GoodsInfoData]) + self.ymc.get_cart_goods_info([GetGoodsInfoResp_01]) allure.step("步骤6:请求订单结算") self.ymc.request_order_settlement(LoginData) else: - LOGGER.info(f"---商品 {self.vip_goods_inputcode} 不存在") - pytest.fail(f"---商品 {self.vip_goods_inputcode} 不存在") + LOGGER.info(f"---商品 {PieceRateGoods} 不存在") + pytest.fail(f"---商品 {PieceRateGoods} 不存在") if __name__ == '__main__': diff --git a/YiMao/scripts/BusiScenarios/test_CAnon016_AddPieceRateProductsAndReturnThem.py b/YiMao/scripts/BusiScenarios/test_CAnon016_AddPieceRateProductsAndReturnThem.py new file mode 100644 index 0000000..fad3de4 --- /dev/null +++ b/YiMao/scripts/BusiScenarios/test_CAnon016_AddPieceRateProductsAndReturnThem.py @@ -0,0 +1,55 @@ +# !/usr/bin/python +# -*- coding: utf-8 -*- +# @Author:: Arthur Wu +# @Description:: 匿名登录,加购计件商品,并退购 +# @Date:: 2024/11/22 +import unittest,allure,time,pytest +from configs.globalObj import LOGGER +from YiMao.businessFunc.ClientApiLib import YMClientApi +from YiMao.data.WuShangSceneTestData import * + + +DescName = "Anon016-匿名登录,加购计件商品,并退购" +@allure.story(f'[场景测试] {DescName}验证') +class Test_CAnon016(unittest.TestCase): + f'''@Date:: 2024/11/22 + @Author:: Arthur Wu + @Desc:: + [购物车客户端] {DescName} + 1、步骤 + 1)加购计件或计重商品 + 2)退购一件 + ''' + def setUp(self) -> None: + self.timestamp = int(time.time()) + self.ymc = YMClientApi(ShoppingCartMac) + self.piece_rate_goods = PieceRateGoods["GoodsInputcode"] + + def test_CAnon016(self): + allure.dynamic.description(f"描述:{DescName}\n") + 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:获取商品信息") + GetGoodsInfoResp_01 = self.ymc.get_goods_info(self.piece_rate_goods) + if GetGoodsInfoResp_01['msg'] != '加购商品不存在': + allure.step("步骤4:添加会员有优惠商品") + AddGoodsResp = self.ymc.add_cart_goods(GetGoodsInfoResp_01, 1, LoginData) + + allure.step("\n步骤7:退购一件商品") + GetGoodsInfoList = [GetGoodsInfoResp_01] + self.ymc.delete_cart_goods(GetGoodsInfoList, LoginData, AddGoodsResp) + + allure.step("步骤5:获取购物车商品信息") + self.ymc.get_cart_goods_info([GetGoodsInfoResp_01]) + allure.step("步骤6:请求订单结算") + self.ymc.request_order_settlement(LoginData) + else: + LOGGER.info(f"---商品 {PieceRateGoods} 不存在") + pytest.fail(f"---商品 {PieceRateGoods} 不存在") + + +if __name__ == '__main__': + unittest.main(verbosity=2) \ No newline at end of file diff --git a/YiMao/scripts/BusiScenarios/test_CAnon017_AddWeightBasedProductsForPurchase.py b/YiMao/scripts/BusiScenarios/test_CAnon017_AddWeightBasedProductsForPurchase.py new file mode 100644 index 0000000..5e53cdb --- /dev/null +++ b/YiMao/scripts/BusiScenarios/test_CAnon017_AddWeightBasedProductsForPurchase.py @@ -0,0 +1,47 @@ +# !/usr/bin/python +# -*- coding: utf-8 -*- +# @Author:: Arthur Wu +# @Description:: 匿名登录,加购计重商品,并结算 +# @Date:: 2024/11/22 +import unittest,allure,time,pytest +from configs.globalObj import LOGGER +from YiMao.businessFunc.ClientApiLib import YMClientApi +from YiMao.data.WuShangSceneTestData import * + + +DescName = "Anon017-匿名登录,加购计重商品,并结算" +@allure.story(f'[场景测试] {DescName}验证') +class Test_CAnon017(unittest.TestCase): + f'''@Date:: 2024/11/22 + @Author:: Arthur Wu + @Desc:: + [购物车客户端] {DescName} + ''' + def setUp(self) -> None: + self.timestamp = int(time.time()) + self.ymc = YMClientApi(ShoppingCartMac) + self.bulk_goods = BulkGoods["GoodsInputcode"] + + def test_CAnon017(self): + allure.dynamic.description(f"描述:{DescName}\n") + 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:获取商品信息") + GetGoodsInfoResp_01 = self.ymc.get_goods_info(self.bulk_goods) + if GetGoodsInfoResp_01['msg'] != '加购商品不存在': + allure.step("步骤4:添加会员有优惠商品") + self.ymc.add_cart_goods(GetGoodsInfoResp_01, 1, LoginData) + allure.step("步骤5:获取购物车商品信息") + self.ymc.get_cart_goods_info([GetGoodsInfoResp_01]) + allure.step("步骤6:请求订单结算") + self.ymc.request_order_settlement(LoginData) + else: + LOGGER.info(f"---商品 {BulkGoods} 不存在") + pytest.fail(f"---商品 {BulkGoods} 不存在") + + +if __name__ == '__main__': + unittest.main(verbosity=2) \ No newline at end of file diff --git a/YiMao/scripts/BusiScenarios/test_CAnon018_PurchaseWeightedGoodsAndReturnThem.py b/YiMao/scripts/BusiScenarios/test_CAnon018_PurchaseWeightedGoodsAndReturnThem.py new file mode 100644 index 0000000..8787841 --- /dev/null +++ b/YiMao/scripts/BusiScenarios/test_CAnon018_PurchaseWeightedGoodsAndReturnThem.py @@ -0,0 +1,55 @@ +# !/usr/bin/python +# -*- coding: utf-8 -*- +# @Author:: Arthur Wu +# @Description:: 匿名登录,加购计重商品,并退购 +# @Date:: 2024/11/21 +import unittest,allure,time,pytest +from configs.globalObj import LOGGER +from YiMao.businessFunc.ClientApiLib import YMClientApi +from YiMao.data.WuShangSceneTestData import * + + +DescName = "Anon018-匿名登录,加购计重商品,并退购" +@allure.story(f'[场景测试] {DescName}验证') +class Test_CAnon018(unittest.TestCase): + f'''@Date:: 2024/11/15 + @Author:: Arthur Wu + @Desc:: + [购物车客户端] {DescName} + 1、步骤 + 1)加购计件或计重商品 + 2)退购一件 + ''' + def setUp(self) -> None: + self.timestamp = int(time.time()) + self.ymc = YMClientApi(ShoppingCartMac) + self.bulk_goods = BulkGoods["GoodsInputcode"] + + def test_CAnon018(self): + allure.dynamic.description(f"描述:{DescName}\n") + 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:获取商品信息") + GetGoodsInfoResp_01 = self.ymc.get_goods_info(self.bulk_goods) + if GetGoodsInfoResp_01['msg'] != '加购商品不存在': + allure.step("步骤4:添加会员有优惠商品") + AddGoodsResp = self.ymc.add_cart_goods(GetGoodsInfoResp_01, 1, LoginData) + + allure.step("\n步骤5:退购一件商品") + GetGoodsInfoList = [GetGoodsInfoResp_01] + self.ymc.delete_cart_goods(GetGoodsInfoList, LoginData, AddGoodsResp) + + allure.step("步骤6:获取购物车商品信息") + self.ymc.get_cart_goods_info([GetGoodsInfoResp_01]) + allure.step("步骤7:请求订单结算") + self.ymc.request_order_settlement(LoginData) + else: + LOGGER.info(f"---商品 {BulkGoods} 不存在") + pytest.fail(f"---商品 {BulkGoods} 不存在") + + +if __name__ == '__main__': + unittest.main(verbosity=2) \ No newline at end of file diff --git a/YiMao/scripts/BusiScenarios/test_CNoLogin001_CheckADs.py b/YiMao/scripts/BusiScenarios/test_CNoLogin001_CheckADs.py index 8218dc1..878bfc3 100644 --- a/YiMao/scripts/BusiScenarios/test_CNoLogin001_CheckADs.py +++ b/YiMao/scripts/BusiScenarios/test_CNoLogin001_CheckADs.py @@ -24,13 +24,17 @@ class Test_CNoLogin001(unittest.TestCase): def test_CNoLogin001_CheckADs(self): allure.dynamic.description(f"描述:{DescName}") AdListData = self.ymc.get_ads_list() - if "error_msg" not in AdListData: - adIdList = [] - for ad in AdListData['data']: - adIdList.append(ad['id']) - LOGGER.info(f"---adIdList: {adIdList}---\n") - for adId in adIdList: - self.ymc.query_ad_detail(str(adId)) + if AdListData['data'] != []: + if "error_msg" not in AdListData: + adIdList = [] + for ad in AdListData['data']: + adIdList.append(ad['id']) + LOGGER.info(f"---adIdList: {adIdList}---\n") + for adId in adIdList: + self.ymc.query_ad_detail(str(adId)) + else: + LOGGER.info(f"---该商超未配置广告---\n") + pytest.fail(f"---该商超未配置广告---\n") if __name__ == '__main__': unittest.main(verbosity=2) \ No newline at end of file diff --git a/YiMao/scripts/BusiScenarios/test_CVip001_AddShoppingBagAndSettlePayment.py b/YiMao/scripts/BusiScenarios/test_CVip001_AddShoppingBagAndSettlePayment.py index 0ea99d3..b5cb87d 100644 --- a/YiMao/scripts/BusiScenarios/test_CVip001_AddShoppingBagAndSettlePayment.py +++ b/YiMao/scripts/BusiScenarios/test_CVip001_AddShoppingBagAndSettlePayment.py @@ -49,6 +49,7 @@ class Test_CVip001_AddShoppingBagAndSettlePayment(unittest.TestCase): self.ymc.request_order_settlement(LoginData) else: LOGGER.info(f"---购物袋 {self.goodsbag_mid} 不存在") + pytest.fail(f"---购物袋 {self.goodsbag_mid} 不存在") def test_CVip00102_AddMaxShoppingbagsForPurchase(self): allure.dynamic.description("描述:加购大号购物袋") @@ -73,7 +74,7 @@ class Test_CVip001_AddShoppingBagAndSettlePayment(unittest.TestCase): self.ymc.request_order_settlement(LoginData) else: LOGGER.info(f"---购物袋 {self.goodsbag_max} 不存在") - raise Exception(f"购物袋 {self.goodsbag_max} 不存在") + pytest.fail(f"购物袋 {self.goodsbag_max} 不存在") diff --git a/YiMao/scripts/BusiScenarios/test_CVip002_AddNonDiscountedProductsForPurchase.py b/YiMao/scripts/BusiScenarios/test_CVip002_AddNonDiscountedProductsForPurchase.py index 0b274b7..f3bc7b6 100644 --- a/YiMao/scripts/BusiScenarios/test_CVip002_AddNonDiscountedProductsForPurchase.py +++ b/YiMao/scripts/BusiScenarios/test_CVip002_AddNonDiscountedProductsForPurchase.py @@ -23,7 +23,7 @@ class Test_CVip002(unittest.TestCase): self.timestamp = int(time.time()) self.ymc = YMClientApi(ShoppingCartMac) self.vip_phone_num = VIPPhoneNumber - self.NormalGoodsInputcode01 = NormalGoodsInputcode01 # 乐事薯片 + self.NormalGoodsInputcode01 = NormalGoodsInputcode01 def test_CVip002_AddNonDiscountedProductsForPurchase(self): allure.dynamic.description(f"描述:{DescName}") @@ -48,7 +48,7 @@ class Test_CVip002(unittest.TestCase): self.ymc.request_order_settlement(LoginData) else: LOGGER.info(f"---商品 {self.NormalGoodsInputcode01} 不存在") - raise Exception(f"---商品 {self.NormalGoodsInputcode01} 不存在") + pytest.fail(f"---商品 {self.NormalGoodsInputcode01} 不存在") if __name__ == '__main__': diff --git a/YiMao/scripts/BusiScenarios/test_CVip003_AddMemberProductsForPurchase.py b/YiMao/scripts/BusiScenarios/test_CVip003_AddMemberProductsForPurchase.py index 7c41470..cee410a 100644 --- a/YiMao/scripts/BusiScenarios/test_CVip003_AddMemberProductsForPurchase.py +++ b/YiMao/scripts/BusiScenarios/test_CVip003_AddMemberProductsForPurchase.py @@ -22,9 +22,8 @@ class Test_CVip003(unittest.TestCase): def setUp(self) -> None: self.timestamp = int(time.time()) self.ymc = YMClientApi(ShoppingCartMac) - # 会员有优惠商品暂未提供 self.vip_phone_num = VIPPhoneNumber - self.vip_goods_inputcode = VipGoodsInputcode # 统一番茄牛肉面 + self.vip_goods_inputcode = VipGoodsInputcode def test_CVip003_AddMemberProductsForPurchase(self): allure.dynamic.description(f"描述:{DescName}") @@ -49,7 +48,7 @@ class Test_CVip003(unittest.TestCase): self.ymc.request_order_settlement(LoginData) else: LOGGER.info(f"---商品 {self.vip_goods_inputcode} 不存在") - raise Exception(f"---商品 {self.vip_goods_inputcode} 不存在") + pytest.fail(f"---商品 {self.vip_goods_inputcode} 不存在") if __name__ == '__main__': diff --git a/YiMao/scripts/BusiScenarios/test_CVip004_AddMultipleItemsForPurchase.py b/YiMao/scripts/BusiScenarios/test_CVip004_AddMultipleItemsForPurchase.py index abcb53f..de86783 100644 --- a/YiMao/scripts/BusiScenarios/test_CVip004_AddMultipleItemsForPurchase.py +++ b/YiMao/scripts/BusiScenarios/test_CVip004_AddMultipleItemsForPurchase.py @@ -22,8 +22,8 @@ class Test_CVip004(unittest.TestCase): self.timestamp = int(time.time()) self.ymc = YMClientApi(ShoppingCartMac) self.vip_phone_num = VIPPhoneNumber - self.goods_inputcode1 = NormalGoodsInputcode01 # 乐事薯片 - self.goods_inputcode2 = NormalGoodsInputcode02 # 统一番茄牛肉面 + self.goods_inputcode1 = NormalGoodsInputcode01 + self.goods_inputcode2 = NormalGoodsInputcode02 def test_CVip004_AddMultipleItemsForPurchase(self): allure.dynamic.description(f"描述:{DescName}") @@ -53,10 +53,10 @@ class Test_CVip004(unittest.TestCase): self.ymc.request_order_settlement(LoginData) else: LOGGER.info(f"---商品 {self.goods_inputcode2} 不存在") - raise AssertionError(f"---商品 {self.goods_inputcode2} 不存在") + pytest.fail(f"---商品 {self.goods_inputcode2} 不存在") else: LOGGER.info(f"---商品 {self.goods_inputcode1} 不存在") - raise AssertionError(f"---商品 {self.goods_inputcode1} 不存在") + pytest.fail(f"---商品 {self.goods_inputcode1} 不存在") if __name__ == '__main__': diff --git a/YiMao/scripts/BusiScenarios/test_CVip005_AddDiscountedProductsForPurchase.py b/YiMao/scripts/BusiScenarios/test_CVip005_AddDiscountedProductsForPurchase.py index e39d351..8ebe1b9 100644 --- a/YiMao/scripts/BusiScenarios/test_CVip005_AddDiscountedProductsForPurchase.py +++ b/YiMao/scripts/BusiScenarios/test_CVip005_AddDiscountedProductsForPurchase.py @@ -22,9 +22,8 @@ class Test_CVip005(unittest.TestCase): def setUp(self) -> None: self.timestamp = int(time.time()) self.ymc = YMClientApi(ShoppingCartMac) - # 折扣商品暂未提供 self.vip_phone_num = VIPPhoneNumber - self.sale_goods_inputCode = SaleGoodsInputCode # 乐事薯片 + self.sale_goods_inputCode = SaleGoodsInputCode def test_CVip005_AddDiscountedProductsForPurchase(self): allure.dynamic.description(f"描述:{DescName}") @@ -49,7 +48,7 @@ class Test_CVip005(unittest.TestCase): self.ymc.request_order_settlement(LoginData) else: LOGGER.info(f"---商品 {self.sale_goods_inputCode} 不存在") - raise Exception(f"---商品 {self.sale_goods_inputCode} 不存在") + pytest.fail(f"---商品 {self.sale_goods_inputCode} 不存在") if __name__ == '__main__': diff --git a/YiMao/scripts/BusiScenarios/test_CVip006_AddPromotionalWhitelistProducts.py b/YiMao/scripts/BusiScenarios/test_CVip006_AddPromotionalWhitelistProducts.py index 86ff893..2579857 100644 --- a/YiMao/scripts/BusiScenarios/test_CVip006_AddPromotionalWhitelistProducts.py +++ b/YiMao/scripts/BusiScenarios/test_CVip006_AddPromotionalWhitelistProducts.py @@ -24,7 +24,6 @@ class Test_CVip006(unittest.TestCase): self.timestamp = int(time.time()) self.ymc = YMClientApi(ShoppingCartMac) self.yms = YMServiceApi() - # 促销白名单商品暂未提供 self.vip_phone_num = VIPPhoneNumber self.promotional_whitelist_goods = PromotionalWhitelistGoods self.market_and_store_info = { @@ -63,14 +62,14 @@ class Test_CVip006(unittest.TestCase): self.ymc.request_order_settlement(LoginData) else: LOGGER.info(f"---商品 {self.promotional_whitelist_goods["GoodsInputcode"]} 不存在") - raise Exception(f"商品 {self.promotional_whitelist_goods["GoodsInputcode"]}不存在") + pytest.fail(f"商品 {self.promotional_whitelist_goods["GoodsInputcode"]}不存在") allure.step("[后置处理]:删除添加的促销白名单商品") self.yms.delete_whitelist_goods() else: LOGGER.info(f"---添加商品 {self.promotional_whitelist_goods['GoodsInputcode']} " f"到促销白名单失败") - raise Exception(f"---添加商品 {self.promotional_whitelist_goods['GoodsInputcode']} " + pytest.fail(f"---添加商品 {self.promotional_whitelist_goods['GoodsInputcode']} " f"到促销白名单失败") diff --git a/YiMao/scripts/BusiScenarios/test_CVip007_AddWeightToTheProduct.py b/YiMao/scripts/BusiScenarios/test_CVip007_AddWeightToTheProduct.py index 9dd1ae5..ee8224e 100644 --- a/YiMao/scripts/BusiScenarios/test_CVip007_AddWeightToTheProduct.py +++ b/YiMao/scripts/BusiScenarios/test_CVip007_AddWeightToTheProduct.py @@ -24,7 +24,6 @@ class Test_CVip007(unittest.TestCase): self.timestamp = int(time.time()) self.ymc = YMClientApi(ShoppingCartMac) self.yms = YMServiceApi() - # 重量放通白名单商品暂未提供 self.vip_phone_num = VIPPhoneNumber self.weight_to_whitelist_goods = WeightToWhitelistGoods self.market_and_store_info = { @@ -64,14 +63,14 @@ class Test_CVip007(unittest.TestCase): self.ymc.request_order_settlement(LoginData) else: LOGGER.info(f"---商品 {self.weight_to_whitelist_goods["GoodsInputcode"]} 不存在") - raise Exception(f"---商品 {self.weight_to_whitelist_goods["GoodsInputcode"]} 不存在") + pytest.fail(f"---商品 {self.weight_to_whitelist_goods["GoodsInputcode"]} 不存在") allure.step("[后置处理]:删除添加的重量放通白名单商品") self.yms.delete_weight_whitelist_goods() else: LOGGER.info(f"---添加商品 {self.weight_to_whitelist_goods['GoodsInputcode']} " f"到重量放通白名单失败") - raise Exception(f"---添加商品 {self.weight_to_whitelist_goods['GoodsInputcode']} " + pytest.fail(f"---添加商品 {self.weight_to_whitelist_goods['GoodsInputcode']} " f"到重量放通白名单失败") diff --git a/YiMao/scripts/BusiScenarios/test_CVip008_ReturnShoppingBag.py b/YiMao/scripts/BusiScenarios/test_CVip008_ReturnShoppingBag.py index a0f5486..a43289b 100644 --- a/YiMao/scripts/BusiScenarios/test_CVip008_ReturnShoppingBag.py +++ b/YiMao/scripts/BusiScenarios/test_CVip008_ReturnShoppingBag.py @@ -22,8 +22,8 @@ class Test_CVip008(unittest.TestCase): self.timestamp = int(time.time()) self.ymc = YMClientApi(ShoppingCartMac) self.vip_phone_num = VIPPhoneNumber - self.shoppingbag_mid = GoodsBagInputcode_mid # 乐事薯片 - self.shoppingbag_max = GoodsBagInputcode_max # 统一番茄牛肉面 + self.shoppingbag_mid = GoodsBagInputcode_mid + self.shoppingbag_max = GoodsBagInputcode_max def test_CVip008_ReturnShoppingBag(self): allure.dynamic.description(f"描述:{DescName}") @@ -60,10 +60,10 @@ class Test_CVip008(unittest.TestCase): self.ymc.request_order_settlement(LoginData) else: LOGGER.info(f"---商品 {self.shoppingbag_max} 不存在") - raise AssertionError(f"---商品 {self.shoppingbag_max} 不存在") + pytest.fail(f"---商品 {self.shoppingbag_max} 不存在") else: LOGGER.info(f"---商品 {self.shoppingbag_mid} 不存在") - raise AssertionError(f"---商品 {self.shoppingbag_mid} 不存在") + pytest.fail(f"---商品 {self.shoppingbag_mid} 不存在") if __name__ == '__main__': diff --git a/YiMao/scripts/BusiScenarios/test_CVip009_ReturnPurchaseOfOrdinaryGoods.py b/YiMao/scripts/BusiScenarios/test_CVip009_ReturnPurchaseOfOrdinaryGoods.py index 5396e27..0e119d8 100644 --- a/YiMao/scripts/BusiScenarios/test_CVip009_ReturnPurchaseOfOrdinaryGoods.py +++ b/YiMao/scripts/BusiScenarios/test_CVip009_ReturnPurchaseOfOrdinaryGoods.py @@ -22,8 +22,8 @@ class Test_CVip009(unittest.TestCase): self.timestamp = int(time.time()) self.ymc = YMClientApi(ShoppingCartMac) self.vip_phone_num = VIPPhoneNumber - self.goods_01 = NormalGoodsInputcode01 # 乐事薯片 - self.goods_02 = NormalGoodsInputcode02 # 统一番茄牛肉面 + self.goods_01 = NormalGoodsInputcode01 + self.goods_02 = NormalGoodsInputcode02 def test_CVip009_ReturnPurchaseOfOrdinaryGoods(self): allure.dynamic.description(f"描述:{DescName}") @@ -60,10 +60,10 @@ class Test_CVip009(unittest.TestCase): self.ymc.request_order_settlement(LoginData) else: LOGGER.info(f"---商品 {self.goods_02} 不存在") - raise AssertionError(f"---商品 {self.goods_02} 不存在") + pytest.fail(f"---商品 {self.goods_02} 不存在") else: LOGGER.info(f"---商品 {self.goods_01} 不存在") - raise AssertionError(f"---商品 {self.goods_01} 不存在") + pytest.fail(f"---商品 {self.goods_01} 不存在") if __name__ == '__main__': diff --git a/YiMao/scripts/BusiScenarios/test_CVip010_ReturnOfMemberProducts.py b/YiMao/scripts/BusiScenarios/test_CVip010_ReturnOfMemberProducts.py index b4fafa2..67b5cc2 100644 --- a/YiMao/scripts/BusiScenarios/test_CVip010_ReturnOfMemberProducts.py +++ b/YiMao/scripts/BusiScenarios/test_CVip010_ReturnOfMemberProducts.py @@ -22,8 +22,8 @@ class Test_CVip010(unittest.TestCase): self.timestamp = int(time.time()) self.ymc = YMClientApi(ShoppingCartMac) self.vip_phone_num = VIPPhoneNumber - self.vip_goods_01 = VipGoodsInputcode # 乐事薯片 - self.vip_goods_02 = VipGoodsInputcode02 # 统一番茄牛肉面 + self.vip_goods_01 = VipGoodsInputcode + self.vip_goods_02 = VipGoodsInputcode02 def test_CVip010_ReturnOfMemberProducts(self): allure.dynamic.description(f"描述:{DescName}") @@ -60,10 +60,10 @@ class Test_CVip010(unittest.TestCase): self.ymc.request_order_settlement(LoginData) else: LOGGER.info(f"---商品 {self.vip_goods_02} 不存在") - raise AssertionError(f"---商品 {self.vip_goods_02} 不存在") + pytest.fail(f"---商品 {self.vip_goods_02} 不存在") else: LOGGER.info(f"---商品 {self.vip_goods_01} 不存在") - raise AssertionError(f"---商品 {self.vip_goods_01} 不存在") + pytest.fail(f"---商品 {self.vip_goods_01} 不存在") if __name__ == '__main__': diff --git a/YiMao/scripts/BusiScenarios/test_CVip011_ReturnOneItemFromMultiplePurchases.py b/YiMao/scripts/BusiScenarios/test_CVip011_ReturnOneItemFromMultiplePurchases.py index 320e489..5ff33be 100644 --- a/YiMao/scripts/BusiScenarios/test_CVip011_ReturnOneItemFromMultiplePurchases.py +++ b/YiMao/scripts/BusiScenarios/test_CVip011_ReturnOneItemFromMultiplePurchases.py @@ -22,8 +22,8 @@ class Test_CVip011(unittest.TestCase): self.timestamp = int(time.time()) self.ymc = YMClientApi(ShoppingCartMac) self.vip_phone_num = VIPPhoneNumber - self.goods_inputcode1 = NormalGoodsInputcode01 # 乐事薯片 - self.goods_inputcode2 = NormalGoodsInputcode02 # 统一番茄牛肉面 + self.goods_inputcode1 = NormalGoodsInputcode01 + self.goods_inputcode2 = NormalGoodsInputcode02 def test_CVip011_ReturnOneItemFromMultiplePurchases(self): allure.dynamic.description(f"描述:{DescName}") @@ -60,10 +60,10 @@ class Test_CVip011(unittest.TestCase): self.ymc.request_order_settlement(LoginData) else: LOGGER.info(f"---商品 {self.goods_inputcode2} 不存在") - raise AssertionError(f"---商品 {self.goods_inputcode2} 不存在") + pytest.fail(f"---商品 {self.goods_inputcode2} 不存在") else: LOGGER.info(f"---商品 {self.goods_inputcode1} 不存在") - raise AssertionError(f"---商品 {self.goods_inputcode1} 不存在") + pytest.fail(f"---商品 {self.goods_inputcode1} 不存在") if __name__ == '__main__': diff --git a/YiMao/scripts/BusiScenarios/test_CVip012_ReturnOfDiscountedProducts.py b/YiMao/scripts/BusiScenarios/test_CVip012_ReturnOfDiscountedProducts.py index bd1338a..59519f8 100644 --- a/YiMao/scripts/BusiScenarios/test_CVip012_ReturnOfDiscountedProducts.py +++ b/YiMao/scripts/BusiScenarios/test_CVip012_ReturnOfDiscountedProducts.py @@ -22,7 +22,7 @@ class Test_CVip012(unittest.TestCase): self.timestamp = int(time.time()) self.ymc = YMClientApi(ShoppingCartMac) self.vip_phone_num = VIPPhoneNumber - self.sale_goods_inputCode = SaleGoodsInputCode # 乐事薯片 + self.sale_goods_inputCode = SaleGoodsInputCode def test_CVip012_ReturnOfDiscountedProducts(self): allure.dynamic.description(f"描述:{DescName}") @@ -54,7 +54,7 @@ class Test_CVip012(unittest.TestCase): self.ymc.request_order_settlement(LoginData) else: LOGGER.info(f"---商品 {self.sale_goods_inputCode} 不存在") - raise AssertionError(f"---商品 {self.sale_goods_inputCode} 不存在") + pytest.fail(f"---商品 {self.sale_goods_inputCode} 不存在") if __name__ == '__main__': diff --git a/YiMao/scripts/BusiScenarios/test_CVip013_ReturnPromotionWhitelistProducts.py b/YiMao/scripts/BusiScenarios/test_CVip013_ReturnPromotionWhitelistProducts.py index 592fe5e..eb9fc8d 100644 --- a/YiMao/scripts/BusiScenarios/test_CVip013_ReturnPromotionWhitelistProducts.py +++ b/YiMao/scripts/BusiScenarios/test_CVip013_ReturnPromotionWhitelistProducts.py @@ -23,7 +23,6 @@ class Test_CVip013(unittest.TestCase): self.timestamp = int(time.time()) self.ymc = YMClientApi(ShoppingCartMac) self.yms = YMServiceApi() - # 促销白名单商品暂未提供 self.vip_phone_num = VIPPhoneNumber self.promotional_whitelist_goods = PromotionalWhitelistGoods self.market_and_store_info = { @@ -73,16 +72,16 @@ class Test_CVip013(unittest.TestCase): self.ymc.request_order_settlement(LoginData) else: LOGGER.info(f"---商品 {self.promotional_whitelist_goods["GoodsInputcode"]} 不存在") - raise Exception(f"---商品 {self.promotional_whitelist_goods["GoodsInputcode"]} 不存在") - - allure.step("[后置处理]:删除添加的促销白名单商品") - self.yms.delete_whitelist_goods() + pytest.fail(f"---商品 {self.promotional_whitelist_goods["GoodsInputcode"]} 不存在") else: LOGGER.info(f"---添加商品 {self.promotional_whitelist_goods['GoodsInputcode']} " f"到促销白名单失败") - raise Exception(f"---添加商品 {self.promotional_whitelist_goods['GoodsInputcode']} " + pytest.fail(f"---添加商品 {self.promotional_whitelist_goods['GoodsInputcode']} " f"到促销白名单失败") + def tearDown(self) -> None: + allure.step("[后置处理]:删除添加的促销白名单商品") + self.yms.delete_whitelist_goods() if __name__ == '__main__': unittest.main(verbosity=2) \ No newline at end of file diff --git a/YiMao/scripts/BusiScenarios/test_CVip014_ReturnWeightOfTheProducte.py b/YiMao/scripts/BusiScenarios/test_CVip014_ReturnWeightOfTheProducte.py index 44b84a3..1424d21 100644 --- a/YiMao/scripts/BusiScenarios/test_CVip014_ReturnWeightOfTheProducte.py +++ b/YiMao/scripts/BusiScenarios/test_CVip014_ReturnWeightOfTheProducte.py @@ -23,7 +23,6 @@ class Test_CVip014(unittest.TestCase): self.timestamp = int(time.time()) self.ymc = YMClientApi(ShoppingCartMac) self.yms = YMServiceApi() - # 重量放通白名单商品暂未提供 self.vip_phone_num = VIPPhoneNumber self.weight_to_whitelist_goods = WeightToWhitelistGoods self.market_and_store_info = { @@ -73,16 +72,16 @@ class Test_CVip014(unittest.TestCase): self.ymc.request_order_settlement(LoginData) else: LOGGER.info(f"---商品 {self.weight_to_whitelist_goods["GoodsInputcode"]} 不存在") - raise Exception(f"---商品 {self.weight_to_whitelist_goods['GoodsInputcode']} 不存在") - - allure.step("[后置处理]:删除添加的重量放通白名单商品") - self.yms.delete_weight_whitelist_goods() + pytest.fail(f"---商品 {self.weight_to_whitelist_goods['GoodsInputcode']} 不存在") else: LOGGER.info(f"---添加商品 {self.weight_to_whitelist_goods['GoodsInputcode']} " f"到重量放通白名单失败") - raise Exception(f"---添加商品 {self.weight_to_whitelist_goods['GoodsInputcode']} " - f"到重量放通白名单失败") + pytest.fail(f"---添加商品 {self.weight_to_whitelist_goods['GoodsInputcode']} " + f"到重量放通白名单失败") + def tearDown(self) -> None: + allure.step("[后置处理]:删除添加的重量放通白名单商品") + self.yms.delete_weight_whitelist_goods() if __name__ == '__main__': unittest.main(verbosity=2) \ No newline at end of file diff --git a/YiMao/scripts/BusiScenarios/test_CVip015_AddPieceRateProductsForPurchase.py b/YiMao/scripts/BusiScenarios/test_CVip015_AddPieceRateProductsForPurchase.py new file mode 100644 index 0000000..eda3419 --- /dev/null +++ b/YiMao/scripts/BusiScenarios/test_CVip015_AddPieceRateProductsForPurchase.py @@ -0,0 +1,53 @@ +# !/usr/bin/python +# -*- coding: utf-8 -*- +# @Author:: Arthur Wu +# @Description:: 匿名转会员登录,加购计件商品,并结算 +# @Date:: 2024/11/22 +import unittest,allure,time,pytest +from configs.globalObj import LOGGER +from YiMao.businessFunc.ClientApiLib import YMClientApi +from YiMao.data.WuShangSceneTestData import * + + +DescName = "Vip015-匿名转会员登录,加购计件商品,并结算" +@allure.story(f'[场景测试] {DescName}验证') +class Test_CVip015(unittest.TestCase): + f'''@Date:: 2024/11/22 + @Author:: Arthur Wu + @Desc:: + [购物车客户端] {DescName} + ''' + def setUp(self) -> None: + self.timestamp = int(time.time()) + self.ymc = YMClientApi(ShoppingCartMac) + self.vip_phone_num = VIPPhoneNumber + self.piece_rate_goods = PieceRateGoods["GoodsInputcode"] + + def test_CVip015(self): + allure.dynamic.description(f"描述:{DescName}\n") + 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:切换会员登录") + Payload02 = {"action": 1, "code": self.vip_phone_num, "isAnon": False} + self.ymc.login_app_v2(Payload02) + + allure.step("步骤3:获取商品信息") + GetGoodsInfoResp_01 = self.ymc.get_goods_info(self.piece_rate_goods) + if GetGoodsInfoResp_01['msg'] != '加购商品不存在': + allure.step("步骤4:添加会员有优惠商品") + self.ymc.add_cart_goods(GetGoodsInfoResp_01, 1, LoginData) + allure.step("步骤5:获取购物车商品信息") + self.ymc.get_cart_goods_info([GetGoodsInfoResp_01]) + allure.step("步骤6:请求订单结算") + self.ymc.request_order_settlement(LoginData) + else: + LOGGER.info(f"---商品 {PieceRateGoods} 不存在") + pytest.fail(f"---商品 {PieceRateGoods} 不存在") + + +if __name__ == '__main__': + unittest.main(verbosity=2) \ No newline at end of file diff --git a/YiMao/scripts/BusiScenarios/test_CVip016_AddPieceRateProductsAndReturnThem.py b/YiMao/scripts/BusiScenarios/test_CVip016_AddPieceRateProductsAndReturnThem.py new file mode 100644 index 0000000..e6c2299 --- /dev/null +++ b/YiMao/scripts/BusiScenarios/test_CVip016_AddPieceRateProductsAndReturnThem.py @@ -0,0 +1,61 @@ +# !/usr/bin/python +# -*- coding: utf-8 -*- +# @Author:: Arthur Wu +# @Description:: 匿名转会员登录,加购计件商品,并退购 +# @Date:: 2024/11/22 +import unittest,allure,time,pytest +from configs.globalObj import LOGGER +from YiMao.businessFunc.ClientApiLib import YMClientApi +from YiMao.data.WuShangSceneTestData import * + + +DescName = "Vip016-匿名转会员登录,加购计件商品,并退购" +@allure.story(f'[场景测试] {DescName}验证') +class Test_CVip016(unittest.TestCase): + f'''@Date:: 2024/11/22 + @Author:: Arthur Wu + @Desc:: + [购物车客户端] {DescName} + 1、步骤 + 1)加购计件或计重商品 + 2)退购一件 + ''' + def setUp(self) -> None: + self.timestamp = int(time.time()) + self.ymc = YMClientApi(ShoppingCartMac) + self.vip_phone_num = VIPPhoneNumber + self.piece_rate_goods = PieceRateGoods["GoodsInputcode"] + + def test_CVip016(self): + allure.dynamic.description(f"描述:{DescName}\n") + 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:切换会员登录") + Payload02 = {"action": 1, "code": self.vip_phone_num, "isAnon": False} + self.ymc.login_app_v2(Payload02) + + allure.step("步骤3:获取商品信息") + GetGoodsInfoResp_01 = self.ymc.get_goods_info(self.piece_rate_goods) + if GetGoodsInfoResp_01['msg'] != '加购商品不存在': + allure.step("步骤4:添加会员有优惠商品") + AddGoodsResp = self.ymc.add_cart_goods(GetGoodsInfoResp_01, 1, LoginData) + + allure.step("\n步骤7:退购一件商品") + GetGoodsInfoList = [GetGoodsInfoResp_01] + self.ymc.delete_cart_goods(GetGoodsInfoList, LoginData, AddGoodsResp) + + allure.step("步骤5:获取购物车商品信息") + self.ymc.get_cart_goods_info([GetGoodsInfoResp_01]) + allure.step("步骤6:请求订单结算") + self.ymc.request_order_settlement(LoginData) + else: + LOGGER.info(f"---商品 {PieceRateGoods} 不存在") + pytest.fail(f"---商品 {PieceRateGoods} 不存在") + + +if __name__ == '__main__': + unittest.main(verbosity=2) \ No newline at end of file diff --git a/YiMao/scripts/BusiScenarios/test_CVip017_AddWeightBasedProductsForPurchase.py b/YiMao/scripts/BusiScenarios/test_CVip017_AddWeightBasedProductsForPurchase.py new file mode 100644 index 0000000..a44ba94 --- /dev/null +++ b/YiMao/scripts/BusiScenarios/test_CVip017_AddWeightBasedProductsForPurchase.py @@ -0,0 +1,53 @@ +# !/usr/bin/python +# -*- coding: utf-8 -*- +# @Author:: Arthur Wu +# @Description:: 匿名转会员登录,加购计重商品,并结算 +# @Date:: 2024/11/22 +import unittest,allure,time,pytest +from configs.globalObj import LOGGER +from YiMao.businessFunc.ClientApiLib import YMClientApi +from YiMao.data.WuShangSceneTestData import * + + +DescName = "Vip017-匿名转会员登录,加购计重商品,并结算" +@allure.story(f'[场景测试] {DescName}验证') +class Test_CVip017(unittest.TestCase): + f'''@Date:: 2024/11/22 + @Author:: Arthur Wu + @Desc:: + [购物车客户端] {DescName} + ''' + def setUp(self) -> None: + self.timestamp = int(time.time()) + self.ymc = YMClientApi(ShoppingCartMac) + self.vip_phone_num = VIPPhoneNumber + self.bulk_goods = BulkGoods["GoodsInputcode"] + + def test_CVip017(self): + allure.dynamic.description(f"描述:{DescName}\n") + 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:切换会员登录") + Payload02 = {"action": 1, "code": self.vip_phone_num, "isAnon": False} + self.ymc.login_app_v2(Payload02) + + allure.step("步骤3:获取商品信息") + GetGoodsInfoResp_01 = self.ymc.get_goods_info(self.bulk_goods) + if GetGoodsInfoResp_01['msg'] != '加购商品不存在': + allure.step("步骤4:添加会员有优惠商品") + self.ymc.add_cart_goods(GetGoodsInfoResp_01, 1, LoginData) + allure.step("步骤5:获取购物车商品信息") + self.ymc.get_cart_goods_info([GetGoodsInfoResp_01]) + allure.step("步骤6:请求订单结算") + self.ymc.request_order_settlement(LoginData) + else: + LOGGER.info(f"---商品 {BulkGoods} 不存在") + pytest.fail(f"---商品 {BulkGoods} 不存在") + + +if __name__ == '__main__': + unittest.main(verbosity=2) diff --git a/YiMao/scripts/BusiScenarios/test_CVip018_PurchaseWeightedGoodsAndReturnThem.py b/YiMao/scripts/BusiScenarios/test_CVip018_PurchaseWeightedGoodsAndReturnThem.py new file mode 100644 index 0000000..6541e38 --- /dev/null +++ b/YiMao/scripts/BusiScenarios/test_CVip018_PurchaseWeightedGoodsAndReturnThem.py @@ -0,0 +1,61 @@ +# !/usr/bin/python +# -*- coding: utf-8 -*- +# @Author:: Arthur Wu +# @Description:: 匿名转会员登录,加购计重商品,并退购 +# @Date:: 2024/11/22 +import unittest,allure,time,pytest +from configs.globalObj import LOGGER +from YiMao.businessFunc.ClientApiLib import YMClientApi +from YiMao.data.WuShangSceneTestData import * + + +DescName = "Vip018-匿名转会员登录,加购计重商品,并退购" +@allure.story(f'[场景测试] {DescName}验证') +class Test_CVip018(unittest.TestCase): + f'''@Date:: 2024/11/22 + @Author:: Arthur Wu + @Desc:: + [购物车客户端] {DescName} + 1、步骤 + 1)加购计件或计重商品 + 2)退购一件 + ''' + def setUp(self) -> None: + self.timestamp = int(time.time()) + self.ymc = YMClientApi(ShoppingCartMac) + self.vip_phone_num = VIPPhoneNumber + self.bulk_goods = BulkGoods["GoodsInputcode"] + + def test_CVip018(self): + allure.dynamic.description(f"描述:{DescName}\n") + 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:切换会员登录") + Payload02 = {"action": 1, "code": self.vip_phone_num, "isAnon": False} + self.ymc.login_app_v2(Payload02) + + allure.step("步骤3:获取商品信息") + GetGoodsInfoResp_01 = self.ymc.get_goods_info(self.bulk_goods) + if GetGoodsInfoResp_01['msg'] != '加购商品不存在': + allure.step("步骤4:添加会员有优惠商品") + AddGoodsResp = self.ymc.add_cart_goods(GetGoodsInfoResp_01, 1, LoginData) + + allure.step("\n步骤5:退购一件商品") + GetGoodsInfoList = [GetGoodsInfoResp_01] + self.ymc.delete_cart_goods(GetGoodsInfoList, LoginData, AddGoodsResp) + + allure.step("步骤6:获取购物车商品信息") + self.ymc.get_cart_goods_info([GetGoodsInfoResp_01]) + allure.step("步骤7:请求订单结算") + self.ymc.request_order_settlement(LoginData) + else: + LOGGER.info(f"---商品 {BulkGoods} 不存在") + pytest.fail(f"---商品 {BulkGoods} 不存在") + + +if __name__ == '__main__': + unittest.main(verbosity=2) \ No newline at end of file diff --git a/commons/SignatureYM.py b/commons/SignatureYM.py index 89db7dc..ea7be96 100644 --- a/commons/SignatureYM.py +++ b/commons/SignatureYM.py @@ -12,7 +12,7 @@ class SignatureYM(): self.token_url = 'https://auth.yimaogo.com/api/login/oauth/access_token' def __tokens(self): - oauth = OAuth2Session(self.client_id, redirect_uri=self.redirect_uri) + oauth = OAuth2Session(client_id=self.client_id, redirect_uri=self.redirect_uri) authorization_url, state = oauth.create_authorization_url(self.authorization_base_url) token_dict = oauth.fetch_token(self.token_url, authorization_response={}, client_secret=self.client_secret) return token_dict["access_token"]