From b28918c57a5596fe117615d7ed976a06a3f97682 Mon Sep 17 00:00:00 2001 From: zhanhuasheng Date: Wed, 31 Jul 2024 16:15:36 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E7=94=A8=E4=BE=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- TestCase/automation/test_05_orderflow.py | 13 ++ TestData/automation/orderflow_test_data.py | 147 ++++++++++++++++++ .../orderflow/orderflow_order_select.py | 38 +++++ .../automation/orderflow/orderflow_select.py | 32 ++++ .../orderflow/orderflow_template_select.py | 7 + Utils/req_handler.py | 7 +- YamlCase/automation/orderflow.yaml | 98 ++++++++++++ 7 files changed, 340 insertions(+), 2 deletions(-) create mode 100644 TestCase/automation/test_05_orderflow.py create mode 100644 TestData/automation/orderflow_test_data.py create mode 100644 TestFile/automation/orderflow/orderflow_order_select.py create mode 100644 TestFile/automation/orderflow/orderflow_select.py create mode 100644 TestFile/automation/orderflow/orderflow_template_select.py create mode 100644 YamlCase/automation/orderflow.yaml diff --git a/TestCase/automation/test_05_orderflow.py b/TestCase/automation/test_05_orderflow.py new file mode 100644 index 0000000..a772328 --- /dev/null +++ b/TestCase/automation/test_05_orderflow.py @@ -0,0 +1,13 @@ +import pytest +from Utils import yaml_handler +from Utils import req_handler +from TestData.automation.orderflow_test_data import orderflowData + +class TestOrderflow: + + yaml_path = r'automation/orderflow.yaml' + yaml_data = yaml_handler.yaml_handler.get_case(yaml_path) + @pytest.mark.flaky(reruns=orderflowData.rerun, reruns_delay=orderflowData.rerun_delay) + @pytest.mark.parametrize('case',yaml_data) + def test_orderflow(self,case): + req_handler.ReqHandler.send_requests(case=case,var_class=orderflowData) diff --git a/TestData/automation/orderflow_test_data.py b/TestData/automation/orderflow_test_data.py new file mode 100644 index 0000000..785f0e3 --- /dev/null +++ b/TestData/automation/orderflow_test_data.py @@ -0,0 +1,147 @@ +from Utils.global_variate import Global +from Utils.mockData_handler import data_handler +from Utils.sql_handler import SqlHandler +from Utils.config_handler import base_config + +class orderflowData(Global): + orderflow_db = SqlHandler(address=base_config.get_value('mysql', 'address'), + port=int(base_config.get_value('mysql', 'port')), + account=base_config.get_value('mysql', 'account'), + password=base_config.get_value('mysql', 'password')) + orderflow_name = 'autotest_orderflow%s'%data_handler.random_id() + orderflow_type = 'Triggers' + orderflow_status = 1 + event_id = "cq1ssgf73uvh93lop2mg" + orderflow_describe = "autotest_orderflow_describe%s"%data_handler.random_id() + create_orderflow_data = {"logicIf": { + "ruleCond": { + "condType": 2, + "robId": "cq1ssgf73uvh93lop2mg", + "objName": "ChatBotOrderEventReturn", + "objType": "bool", + "compOperatorType": "eq", + "compOperatorValue": "true", + "nodeFlag": "Triggers", + "showType": "", + "showKind": "", + "extendedAttributes": "{\"triggerBtnName\":\"Return\",\"title\":\"Order return\",\"x\":212,\"y\":212,\"nodeId\":\"Triggers_5533975931326896\"}" + }, + "result": [ + { + "childRuleObject": None, + "extendedAttributes": "{\"showType\":\"next\",\"nodeId\":\"Actions_8758719561772293\",\"title\":\"Reason of cancellatiion\",\"triggerBtnName\":\"Submit\",\"actionType\":\"ChatBotOrderOperationReason\",\"x\":686,\"y\":212}", + "inner": [ + { + "robId": "cjhg9iuein687habss50", + "objName": "ChatBotMulReply", + "objType": "string", + "objValue": "{\"contentList\":\"Just in case we get disconnected, please provide your name and email address, thanks.\",\"attachmentList\":[]}", + "showType": "mulInput", + "showKind": "chatBotReply", + "extendedAttributes": "{\"title\":\"Reason of cancellatiion\",\"nodeId\":\"Actions_8758719561772293\",\"triggerBtnName\":\"Submit\",\"actionType\":\"ChatBotOrderOperationReason\",\"x\":686,\"y\":212}" + }, + { + "robId": "cq19pg773uvprfk5v68g", + "objName": "ChatBotOrderOperationReason", + "objType": "string", + "objValue": "[{\"key\":\"CUSTOMER\",\"value\":\"The customer wanted to cancel the order.\",\"checked\":false},{\"key\":\"DECLINED\",\"value\":\"Payment was declined.\",\"checked\":false},{\"key\":\"FRAUD\",\"value\":\"The order was fraudulent.\",\"checked\":false},{\"key\":\"INVENTORY\",\"value\":\"There was insufficient inventory.\",\"checked\":false},{\"key\":\"OTHER\",\"value\":\"The order was canceled for an unlisted reason.\",\"checked\":false},{\"key\":\"STAFF\",\"value\":\"Staff made an error.\",\"checked\":false}]", + "showType": "", + "showKind": "", + "extendedAttributes": "{\"title\":\"Reason of cancellatiion\",\"nodeId\":\"Actions_8758719561772293\",\"triggerBtnName\":\"Submit\",\"actionType\":\"ChatBotOrderOperationReason\",\"x\":686,\"y\":212}" + } + ], + "resultType": 2, + "next": { + "childRuleObject": None, + "extendedAttributes": "{\"showType\":\"next\",\"nodeId\":\"Actions_42083044729569607\",\"title\":\"Message content\",\"x\":1160,\"y\":212}", + "inner": [ + { + "robId": "cjhg9iuein687habss50", + "objName": "ChatBotMulReply", + "objType": "string", + "objValue": "{\"contentList\":\"Hi👋~ Please check with our return policy and make sure you are eligible for the return.\\n\",\"attachmentList\":[],\"productList\":[],\"faqList\":[]}", + "showType": "mulInput", + "showKind": "chatBotReply", + "extendedAttributes": "{\"title\":\"Message content\",\"nodeId\":\"Actions_42083044729569607\",\"x\":1160,\"y\":212}", + "childRuleObject": None + } + ], + "resultType": 2, + "next": None + } + } + ] + }} + create_orderflow_data2 ={"logicIf": { + "ruleCond": { + "compOperatorType": "eq", + "compOperatorValue": "", + "condType": 1, + "extendedAttributes": "{\"triggerBtnName\":\"Return\",\"title\":\"Order return\",\"x\":212,\"y\":212,\"nodeId\":\"Triggers_5533975931326896\"}", + "logicType": "", + "next": None, + "objName": "", + "objType": "", + "robId": "", + "inner": { + "condType": 2, + "robId": "cq1ssgf73uvh93lop2mg", + "objName": "ChatBotOrderEventReturn", + "objType": "bool", + "logicType": "and", + "compOperatorType": "eq", + "compOperatorValue": "true", + "nodeFlag": "Triggers", + "showType": "", + "showKind": "", + "extendedAttributes": "{\"triggerBtnName\":\"Return\",\"title\":\"Order return\",\"x\":212,\"y\":212,\"nodeId\":\"Triggers_5533975931326896\"}", + "next": { + "compOperatorType": "checkMultipleShopHost", + "compOperatorValue": "[\"et-tyl-06604.myshopify.com\"]", + "condType": 2, + "extendedAttributes": "{}", + "inner": None, + "next": None, + "logicType": "and", + "objName": "ChatBotMultipleShopHost", + "objType": "string", + "robId": "cq19d9v73uvvu9p8ottg" + } + } + }, + "result": [ + { + "robId": "cjhg9iuein687habss50", + "objName": "ChatBotMulReply", + "objType": "string", + "objValue": "{\"contentList\":\"Was this helpful?\",\"attachmentList\":[]}", + "showType": "mulInput", + "showKind": "chatBotReply", + "extendedAttributes": "{\"title\":\"Ask for feedback\",\"nodeId\":\"Actions_8945405052216719\",\"x\":674.9265927977838,\"y\":77.71883656509698}" + }, + { + "robId": "cjis7p6ein6e3lp2v0m0", + "objName": "ChildRule", + "objType": "string", + "showType": "", + "showKind": "", + "objId": "Actions_46850976565688953", + "childRule": 1, + "objValue": "{\"ruleName\":\"Yes, Thanks\"}", + "childRuleObject": None, + "extendedAttributes": "{\"title\":\"Ask for feedback\",\"nodeId\":\"Actions_8945405052216719\",\"x\":674.9265927977838,\"y\":77.71883656509698}" + }, + { + "robId": "cjis7p6ein6e3lp2v0m0", + "objName": "ChildRule", + "objType": "string", + "showType": "", + "showKind": "", + "objId": "Actions_879089445170381", + "childRule": 1, + "objValue": "{\"ruleName\":\"No, I need more help\"}", + "childRuleObject": None, + "extendedAttributes": "{\"title\":\"Ask for feedback\",\"nodeId\":\"Actions_8945405052216719\",\"x\":674.9265927977838,\"y\":77.71883656509698}" + } + ] + }} \ No newline at end of file diff --git a/TestFile/automation/orderflow/orderflow_order_select.py b/TestFile/automation/orderflow/orderflow_order_select.py new file mode 100644 index 0000000..bcc5349 --- /dev/null +++ b/TestFile/automation/orderflow/orderflow_order_select.py @@ -0,0 +1,38 @@ +from TestData.automation.orderflow_test_data import orderflowData +from Utils.sql_handler import test_env_conn + +orderflow_order_select_sql = f'select * from `user_order` where email = "{orderflowData.email}" and user_id = {orderflowData.shopId} order by id desc limit 10' +orderflow_order_select_result = test_env_conn.select_one_value(sql=orderflow_order_select_sql) + +order_number = orderflow_order_select_result['order_number'] +cancel_reason = orderflow_order_select_result['cancel_reason'] +currency = orderflow_order_select_result['currency'] +ship_to = orderflow_order_select_result['ship'] +order_id = orderflow_order_select_result['order_id'] +order_name = orderflow_order_select_result['order_name'] +tracking_number = orderflow_order_select_result['tracking_numbers'] +financial_status = orderflow_order_select_result['financial_status'] +order_items = orderflow_order_select_result['order_line_items'] +total_amount = orderflow_order_select_result['total_price_usd'] +setattr(orderflowData, 'order_number', str(order_number)) +setattr(orderflowData, 'cancel_reason', cancel_reason) +setattr(orderflowData, 'currency', currency) +setattr(orderflowData, 'ship_to', ship_to) +setattr(orderflowData, 'order_id', str(order_id)) +setattr(orderflowData, 'order_name', order_name) +setattr(orderflowData, 'tracking_number', tracking_number) +setattr(orderflowData, 'financial_status', financial_status) +setattr(orderflowData, 'order_items', order_items) +setattr(orderflowData, 'total_amount', total_amount) +setattr(orderflowData, 'order_shop_id', str(orderflowData.shopId)) + +orderflow_select_sql = f'select MAX(rule_id), event_id from `rule_define` where brand_id = {orderflowData.brandId} and status = 1 and child_rule = 0 and rule_cate = 2 group by event_id' +orderflow_select_result = test_env_conn.select_many_value(sql=orderflow_select_sql) +for flow in orderflow_select_result: + if flow['event_id'] == 'cq2batf73uvr2vuobf30': + cancel_flow = 1 + elif flow['event_id'] == 'cq1ssgf73uvh93lop2mg': + return_flow = 1 + +setattr(orderflowData, 'cancel_able', True) if financial_status == 'pending' and cancel_flow and cancel_reason == '' else setattr(orderflowData, 'cancel_able', False) +setattr(orderflowData, 'return_able', True) if orderflow_order_select_result['is_all_returned'] == 0 and return_flow and financial_status != 'pending' else setattr(orderflowData, 'return_able', False) diff --git a/TestFile/automation/orderflow/orderflow_select.py b/TestFile/automation/orderflow/orderflow_select.py new file mode 100644 index 0000000..8b263f9 --- /dev/null +++ b/TestFile/automation/orderflow/orderflow_select.py @@ -0,0 +1,32 @@ +from TestData.automation.orderflow_test_data import orderflowData + +orderflow_select_sql = f'select * from `rule_define` where brand_id = {orderflowData.brandId} and status != 3 and tpl_id = "{orderflowData.orderflow_parent_template_id}" and child_rule = 0 and rule_cate = 2' +orderflow_select_result = orderflowData.orderflow_db.select_many_value(sql=orderflow_select_sql) +if orderflow_select_result: + orderflow_num = len(orderflow_select_result) + orderflow = orderflow_select_result[0] + select_orderflow_id = orderflow['rule_id'] + select_orderflow_name = orderflow['rule_name'] + select_orderflow_status = orderflow['status'] + select_orderflow_sort = str(orderflow['sorts']) + select_orderflow_describe = orderflow['rule_describe'] +else: + insert_rule_raw = '{"ruleId":"%s","tplId":"%s","brandId":%s,"eventId":"%s","ruleName":"%s","ruleDescribe":"%s","status":%s,"ruleLogic":{"logicIf":{"ruleCond":{"condType":2,"robId":"%s","objName":"ChatBotIncomingMessage","objType":"bool","compOperatorType":"eq","compOperatorValue":"true","extendedAttributes":"{\\"x\\":212,\\"y\\":212,\\"nodeId\\":\\"Triggers_35705406543421204\\"}"},"result":[{"extendedAttributes":"{\\"showType\\":\\"next\\",\\"nodeId\\":\\"Actions_7500242750723225\\"}","resultType":2,"inner":[{"ruleId":"cp5ccqct7rnv226qoavg","robId":"cjhg9iuein687habss50","objName":"ChatBotMulReply","objType":"string","objKind":2,"objValue":"{\\"contentList\\":\\"%s\\",\\"attachmentList\\":[]}","showType":"mulInput","showKind":"chatBotReply","extendedAttributes":"{\\"title\\":\\"Message content\\",\\"nodeId\\":\\"Actions_7500242750723225\\",\\"x\\":658.2869318181818,\\"y\\":270.7599431818181}","resultType":1}]}],"index":1}}}'%(orderflowData.insert_orderflow_id,orderflowData.orderflow_parent_template_id,orderflowData.brandId,orderflowData.event_id,orderflowData.orderflow_name,orderflowData.orderflow_describe,orderflowData.orderflow_status,orderflowData.event_id,orderflowData.orderflow_msg) + orderflow_insert_sql = f"""INSERT INTO willdesk.rule_define (rule_id,tpl_id,brand_id,event_id,rule_name,rule_describe,rule_dsl,rule_raw,sorts,parent_ruleid,child_rule,dsl_version,json_version,rule_cate,status,create_at,update_at) VALUES + ('{orderflowData.insert_orderflow_id}','{orderflowData.orderflow_parent_template_id}',{orderflowData.brandId},'{orderflowData.event_id}',{orderflowData.orderflow_name},'{orderflowData.orderflow_describe}','cnVsZSAiY3A1Y2NxY3Q3cm52MjI2cW9hdmciICJUcmlhZ2UgYnV0dG9uIGFuZCBhc3NpZ24gdG8gZGlmZmVyZW50IHRlYW1zIiBzYWxpZW5jZSAgJFJVTEVfU09SVFNfUExBQ0UkCmJlZ2luCmlmIGNoZWNrUnVsZUluZGV4KGRhdGEuUnVuSW5kZXhzLDEpIHx8ICgoZGF0YS5DaGVja0RhdGEoIkNoYXRCb3RJbmNvbWluZ01lc3NhZ2UiKSAmJiBlcXVhbChkYXRhLkdldERhdGEoIkNoYXRCb3RJbmNvbWluZ01lc3NhZ2UiKSwidHJ1ZSIpKSkgewogIHJldHVybiAiVzNzaWNuVnNaVWxrSWpvaVkzQTFZMk54WTNRM2NtNTJNakkyY1c5aGRtY2lMQ0p5YjJKSlpDSTZJbU5xYUdjNWFYVmxhVzQyT0Rkb1lXSnpjelV3SWl3aWIySnFUbUZ0WlNJNklrTm9ZWFJDYjNSTmRXeFNaWEJzZVNJc0ltOWlhbFI1Y0dVaU9pSnpkSEpwYm1jaUxDSnZZbXBMYVc1a0lqb3lMQ0p2WW1wV1lXeDFaU0k2SW50Y0ltTnZiblJsYm5STWFYTjBYQ0k2WENKSWFmQ2ZrWXQrWENJc1hDSmhkSFJoWTJodFpXNTBUR2x6ZEZ3aU9sdGRmU0lzSW5Ob2IzZFVlWEJsSWpvaWJYVnNTVzV3ZFhRaUxDSnphRzkzUzJsdVpDSTZJbU5vWVhSQ2IzUlNaWEJzZVNJc0ltVjRkR1Z1WkdWa1FYUjBjbWxpZFhSbGN5STZJbnRjSW5ScGRHeGxYQ0k2WENKTlpYTnpZV2RsSUdOdmJuUmxiblJjSWl4Y0ltNXZaR1ZKWkZ3aU9sd2lRV04wYVc5dWMxODNOVEF3TWpReU56VXdOekl6TWpJMVhDSXNYQ0o0WENJNk5qVTRMakk0Tmprek1UZ3hPREU0TVRnc1hDSjVYQ0k2TWpjd0xqYzFPVGswTXpFNE1UZ3hPREY5SWl3aWNtVnpkV3gwVkhsd1pTSTZNWDFkIgp9CnJldHVybiAiVzNzaWJtOWtaVWx1WkdWNElqb3hMQ0p5ZFd4bFNXUWlPaUpqY0RWalkzRmpkRGR5Ym5ZeU1qWnhiMkYyWnlJc0luSnZZa2xrSWpvaVkyMXJPVzB4YmpjemRYWm5hREZ5Wm0xb2J6QWlMQ0p2WW1wT1lXMWxJam9pUTJoaGRFSnZkRWx1WTI5dGFXNW5UV1Z6YzJGblpTSXNJbTlpYWxSNWNHVWlPaUppYjI5c0lpd2liMkpxUzJsdVpDSTZNU3dpY21WemRXeDBWSGx3WlNJNk1YMWQiCmVuZAo=',{insert_rule_raw},35870000,'',0,'v2','v2',1,{orderflowData.orderflow_status},'2024-05-20 11:41:29','2024-05-20 11:41:29'); +""" + orderflowData.orderflow_db.execute_sql(sql=orderflow_insert_sql) + select_orderflow_id = orderflowData.insert_orderflow_id + select_orderflow_name = orderflowData.orderflow_name + select_orderflow_status = orderflowData.orderflow_status + orderflow_num = 1 + select_orderflow_sort = '35870000' + select_orderflow_describe = orderflowData.orderflow_describe +setattr(orderflowData, 'select_orderflow_id', select_orderflow_id) +setattr(orderflowData, 'orderflow_num', orderflow_num) +setattr(orderflowData, 'select_orderflow_name', select_orderflow_name) +setattr(orderflowData, 'select_orderflow_status', select_orderflow_status) +setattr(orderflowData, 'select_orderflow_sort', select_orderflow_sort) +setattr(orderflowData, 'select_orderflow_describe', select_orderflow_describe) +setattr(orderflowData, 'orderflow_num_less', orderflow_num - 1) +orderflowData.orderflow_db.close_db() \ No newline at end of file diff --git a/TestFile/automation/orderflow/orderflow_template_select.py b/TestFile/automation/orderflow/orderflow_template_select.py new file mode 100644 index 0000000..650b43d --- /dev/null +++ b/TestFile/automation/orderflow/orderflow_template_select.py @@ -0,0 +1,7 @@ +from Utils.sql_handler import test_env_conn +from TestData.automation.orderflow_test_data import orderflowData + +template_parent_select_sql = f'select * from rule_template where status = 1 and tpl_category = "autoanswer"' +template_parent_select_result = test_env_conn.select_one_value(sql=template_parent_select_sql) +orderflow_parent_template_id = template_parent_select_result['tpl_id'] +setattr(orderflowData, 'orderflow_parent_template_id', orderflow_parent_template_id) \ No newline at end of file diff --git a/Utils/req_handler.py b/Utils/req_handler.py index a24dd91..809d8a2 100644 --- a/Utils/req_handler.py +++ b/Utils/req_handler.py @@ -114,7 +114,7 @@ class ReqHandler: raise TypeError('用例格式有误') except AssertionError: logger.error(f'{title}用例执行失败,失败原因:断言不通过\n用例{case}\n期望值{expected}\n实际返回值{res.text}') - print(f'{title}用例执行失败,失败原因:断言不通过\n用例{case}\n期望值{expected}\n实际返回值{res.text}') + # print(f'{title}用例执行失败,失败原因:断言不通过\n用例{case}\n期望值{expected}\n实际返回值{jsonpath.jsonpath(res.json())}') raise AssertionError except pymysql.err.InterfaceError: print('数据库连接失败') @@ -169,6 +169,9 @@ class ReqHandler: res_path_value = jsonpath.jsonpath(res.json(),path)[0] if str(path)[0:2] == '$.' else path else: res_path_value = jsonpath.jsonpath(res.json(),path) + if 'in' in assert_way and isinstance(value,dict): + value = str(value) + res_path_value = str(value) if isinstance(res_path_value,str) and '{"contentList":' in res_path_value: res_path_value = res_path_value.replace('\\','') #兼容websocket,当遇到包含{"contentList":内容的值,且类型是字符串时,会自动去除所有\号 if assert_way == 'eq': #eq代表完全相同 @@ -193,7 +196,7 @@ class ReqHandler: print(f'期望值为{value}({type(value)}),实际返回值为{res_path_value}({type(res_path_value)}),完整的expected体为{expected}') raise AssertionError except Exception: - print(f'返回值:{res.text}') + print(f'断言值:{item},返回值:{res.text}') raise Exception def set_value_handler(self,res,item,var_class): ''' diff --git a/YamlCase/automation/orderflow.yaml b/YamlCase/automation/orderflow.yaml new file mode 100644 index 0000000..9a0f6a4 --- /dev/null +++ b/YamlCase/automation/orderflow.yaml @@ -0,0 +1,98 @@ +api1: + title: 新建一个orderflow + url: /api/v1/rule/updateRuleDefine + method: post + data: {"brandId": "${brandId}","childRule": 0,"eventId": "${event_id}","ruleDescribe": "${orderflow_describe}","ruleId": "","ruleLogic": "${create_orderflow_data}","ruleName": "${orderflow_name}","ruleType": "${orderflow_type}","status": "${orderflow_status}","tplId": "${orderflow_parent_template_id}","v": "${v}"} + set_value: {"create_orderflow_id": "$.data.ruleId"} + before_sql: automation/orderflow/orderflow_template_select.py + expected: + - eq: {"$.code": 0} + +api2: + title: 检查是否新建成功 + url: /api/v1/rule/ruleList + method: post + data: {"page":1,"pageSize":100,"brandId":"${brandId}","ruleCate":2,"tplId":"${orderflow_parent_template_id}","v":"${v}"} + before_sql: automation/orderflow/orderflow_select.py + expected: + - eq: {"$.code": 0} + - eq: {"$.data.total": "${orderflow_num}"} + - eq: {"$.data.ruleList[?(@.ruleId == '${select_orderflow_id}')].ruleName": "${select_orderflow_name}"} + - eq: {"$.data.ruleList[?(@.ruleId == '${select_orderflow_id}')].sorts": "${select_orderflow_sort}"} + - eq: {"$.data.ruleList[?(@.ruleId == '${select_orderflow_id}')].status": "${select_orderflow_status}"} + - in_list: {"$.data.ruleList[*].ruleId": "${create_orderflow_id}"} + - eq: {"$.data.ruleList[?(@.ruleId == '${create_orderflow_id}')].ruleName": "${orderflow_name}"} + +api3: + title: 更新orderflow + url: /api/v1/rule/updateRuleDefine + method: post + data: {"tplId":"${orderflow_parent_template_id}","ruleName":"${orderflow_name}","ruleDescribe":"${orderflow_describe}","ruleId":"${create_orderflow_id}","status":"${orderflow_status}","brandId":"${brandId}","eventId":"${event_id}","childRule":0,"ruleType":"Triggers","ruleLogic":"${create_orderflow_data2}","v":"${v}"} + expected: + - eq: {"$.code": 0} + +api4: + title: 检查是否更新成功 + url: /api/v1/rule/ruleList + method: post + data: {"page":1,"pageSize":100,"brandId":"${brandId}","ruleCate":2,"tplId":"${orderflow_parent_template_id}","v":"${v}"} + expected: + - eq: {"$.code": 0} + - eq: {"$.data.ruleList[?(@.ruleId == '${create_orderflow_id}')].ruleName": "${orderflow_name}"} + - in: {"$.data.ruleList[?(@.ruleId == '${create_orderflow_id}')].ruleLogic": "${create_orderflow_data2}"} + +api5: + title: 关闭orderflow + url: /api/v1/rule/updateRuleStatus + method: post + data: {"status":2,"ruleId":"${create_orderflow_id}","v":"${v}"} + expected: + - eq: {"$.code": 0} + +api6: + title: 删除orderflow + url: /api/v1/rule/updateRuleStatus + method: post + data: {"status":3,"ruleId":"${create_orderflow_id}","v": "${v}"} + expected: + - eq: {"$.code": 0} + + +api7: + title: 检查是否删除成功 + url: /api/v1/rule/ruleList + method: post + data: {"page":1,"pageSize":100,"brandId":"${brandId}","ruleCate":2,"tplId":"${orderflow_parent_template_id}","v":"${v}"} + expected: + - eq: {"$.code": 0} + - eq: {"$.data.total": "${orderflow_num_less}"} + - not_in_list: {"$.data.ruleList[*].ruleId": "${create_orderflow_id}"} + +api8: + title: 发送邮箱验证码 + url: /api/v1/email/local/sendEmailCode + method: post + data: {"toEmail": "${email}","v": "${v}"} + expected: + - eq: {"$.code": 0} + +api9: + title: 获取订单列表 + url: /api/v1/order/local/getOrdersByCustomer + method: post + data: {"email":"${email}","shopId":"${shopId}","pageNum":1,"pageSize":20,"v":"${v}"} + before_sql: automation/orderflow/orderflow_order_select.py + expected: + - eq: {"$.code": 0} + - eq: {"$.data.orderList[?(@.orderNumber == '${order_number}')].cancelReason": "${cancel_reason}"} + - eq: {"$.data.orderList[?(@.orderNumber == '${order_number}')].userId": "${order_shop_id}"} + - eq: {"$.data.orderList[?(@.orderNumber == '${order_number}')].trackingNumbers": "${tracking_number}"} + - eq: {"$.data.orderList[?(@.orderNumber == '${order_number}')].totalAmount": "${total_amount}"} + - eq: {"$.data.orderList[?(@.orderNumber == '${order_number}')].shipTo": "${ship_to}"} + - eq: {"$.data.orderList[?(@.orderNumber == '${order_number}')].orderItems": "${order_items}"} + - eq: {"$.data.orderList[?(@.orderNumber == '${order_number}')].financialStatus": "${financial_status}"} + - eq: {"$.data.orderList[?(@.orderNumber == '${order_number}')].orderName": "${order_name}"} + - eq: {"$.data.orderList[?(@.orderNumber == '${order_number}')].currency": "${currency}"} + - eq: {"$.data.orderList[?(@.orderNumber == '${order_number}')].orderId": "${order_id}"} + - eq: {"$.data.orderList[?(@.orderNumber == '${order_number}')].cancelable": "${cancel_able}"} + - eq: {"$.data.orderList[?(@.orderNumber == '${order_number}')].returnable": "${return_able}"} -- GitLab