From ccff10c34ec435b461375478f6a3f7067fcde301 Mon Sep 17 00:00:00 2001 From: zhanhuasheng Date: Sat, 11 May 2024 18:36:25 +0800 Subject: [PATCH] =?UTF-8?q?1=E3=80=81=E6=96=B0=E5=A2=9E=E7=94=A8=E4=BE=8B?= =?UTF-8?q?=202=E3=80=81=E6=96=B0=E5=A2=9E=E8=B6=85=E6=97=B6=E7=9D=A1?= =?UTF-8?q?=E7=9C=A0=E6=9C=BA=E5=88=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- TestCase/setting/test_10_team.py | 13 ++ TestData/setting/team_test_data.py | 10 ++ TestFile/setting/team/team_delete.py | 8 + TestFile/setting/team/team_select.py | 35 +++++ TestFile/setting/team/teammate_select.py | 48 ++++++ Utils/req_handler.py | 7 + YamlCase/setting/team.yaml | 177 +++++++++++++++++++++++ 7 files changed, 298 insertions(+) create mode 100644 TestCase/setting/test_10_team.py create mode 100644 TestData/setting/team_test_data.py create mode 100644 TestFile/setting/team/team_delete.py create mode 100644 TestFile/setting/team/team_select.py create mode 100644 TestFile/setting/team/teammate_select.py create mode 100644 YamlCase/setting/team.yaml diff --git a/TestCase/setting/test_10_team.py b/TestCase/setting/test_10_team.py new file mode 100644 index 0000000..3e6a985 --- /dev/null +++ b/TestCase/setting/test_10_team.py @@ -0,0 +1,13 @@ +import pytest +from Utils import yaml_handler +from Utils import req_handler +from TestData.setting.team_test_data import teamData + +class TestTeam: + + yaml_path = r'setting/team.yaml' + yaml_data = yaml_handler.yaml_handler.get_case(yaml_path) + @pytest.mark.flaky(reruns=teamData.rerun, reruns_delay=teamData.rerun_delay) + @pytest.mark.parametrize('case',yaml_data) + def test_team(self,case): + req_handler.ReqHandler.send_requests(case=case,var_class=teamData) diff --git a/TestData/setting/team_test_data.py b/TestData/setting/team_test_data.py new file mode 100644 index 0000000..4e1f5e1 --- /dev/null +++ b/TestData/setting/team_test_data.py @@ -0,0 +1,10 @@ +from Utils.global_variate import Global +from Utils.mockData_handler import data_handler + +class teamData(Global): + teammate_email = 'autotest_customer%s@qq.com'%data_handler.random_id() + teammate_role = 'Agent' + new_teammate_role = 'Admin' + + team_name = 'autotest_team%s'%data_handler.random_id() + new_team_name = 'autotest_team_new%s'%data_handler.random_id() \ No newline at end of file diff --git a/TestFile/setting/team/team_delete.py b/TestFile/setting/team/team_delete.py new file mode 100644 index 0000000..4e95105 --- /dev/null +++ b/TestFile/setting/team/team_delete.py @@ -0,0 +1,8 @@ +from Utils.sql_handler import test_env_conn +from TestData.setting.team_test_data import teamData + +team_delete_sql = f'delete from `resource_item` where brand_id = {teamData.brandId} and (name in ("{teamData.team_name}","{teamData.new_team_name}") or id = {teamData.team_id})' +test_env_conn.execute_sql(team_delete_sql) + +teammate_delete_sql = f'delete from `resource_item_cs_rel` where cs_id = {teamData.teammate_id}' +test_env_conn.execute_sql(teammate_delete_sql) \ No newline at end of file diff --git a/TestFile/setting/team/team_select.py b/TestFile/setting/team/team_select.py new file mode 100644 index 0000000..d4e01d4 --- /dev/null +++ b/TestFile/setting/team/team_select.py @@ -0,0 +1,35 @@ +from Utils.sql_handler import test_env_conn +from TestData.setting.team_test_data import teamData + +team_select_sql = f'select * from `resource_item` where brand_id = {teamData.brandId} and resource_id = 1' +team_select_result = test_env_conn.select_many_value(sql=team_select_sql) +if team_select_result: + team_num = len(team_select_result) + team_id_select_sql = f'select * from `resource_item` where brand_id = {teamData.brandId} and name = "{teamData.team_name}"' + team_id_result = test_env_conn.select_one_value(sql=team_id_select_sql) + if not team_id_result: + team_insert_sql = f"""INSERT INTO resource_item (name,picture,rel_id,brand_id,resource_id,sorts,is_delete,update_at,create_at) VALUES + ("{teamData.team_name}",'',0,{teamData.brandId},1,0,0,'2024-05-11 15:47:45','2024-05-11 15:47:45'); + """ + test_env_conn.execute_sql(sql=team_insert_sql) + team_id_select_sql = f'select * from `resource_item` where brand_id = {teamData.brandId} and name = "{teamData.team_name}"' + team_id_result = test_env_conn.select_one_value(sql=team_id_select_sql) + team_id = team_id_result['id'] + else: + team_id = team_id_result['id'] + setattr(teamData, 'team_id', team_id) + setattr(teamData, 'team_num', team_num) + +else: + team_insert_sql = f"""INSERT INTO resource_item (name,picture,rel_id,brand_id,resource_id,sorts,is_delete,update_at,create_at) VALUES + ("{teamData.team_name}",'',0,{teamData.brandId},1,0,0,'2024-05-11 15:47:45','2024-05-11 15:47:45'); +""" + test_env_conn.execute_sql(sql=team_insert_sql) + team_id_select_sql = f'select * from `resource_item` where brand_id = {teamData.brandId} and name = "{teamData.team_name}"' + team_id_result = test_env_conn.select_one_value(sql=team_id_select_sql) + team_id = team_id_result['id'] + team_num = 1 + setattr(teamData, 'team_id', team_id) + setattr(teamData, 'team_num', team_num) + + diff --git a/TestFile/setting/team/teammate_select.py b/TestFile/setting/team/teammate_select.py new file mode 100644 index 0000000..abce994 --- /dev/null +++ b/TestFile/setting/team/teammate_select.py @@ -0,0 +1,48 @@ +from Utils.sql_handler import test_env_conn +from TestData.setting.team_test_data import teamData +def insert_teammate(): + teammate_insert_sql = f"""INSERT INTO `customer_service` (email,password,name,profile,is_update_password,is_open_window,enter_type,customer_type,local_lang,is_delete,create_at,update_at) VALUES + ("{teamData.teammate_email}",'','','',0,1,1,0,'',0,1715397311,1715409940); + """ + test_env_conn.execute_sql(sql=teammate_insert_sql) + teammate_id_select_sql = f'select * from customer_service where email = "{teamData.teammate_email}"' + teammate_id_select_result = test_env_conn.select_one_value(sql=teammate_id_select_sql) + teammate_id = teammate_id_select_result['id'] + all_conversation_channel_id_select_sql = f'select * from `resource_item` where brand_id = {teamData.brandId} and resource_id = 0' + all_conversation_channel_id_select_result = test_env_conn.select_one_value( + sql=all_conversation_channel_id_select_sql) + all_conversation_channel_id = all_conversation_channel_id_select_result['id'] + teammate_rel_channel_insert_sql = f"""INSERT INTO `resource_item_cs_rel` (item_id,cs_id,sorts,is_hup,is_delete,update_at,create_at) VALUES + ({all_conversation_channel_id},{teammate_id},0,1,0,'2024-05-11 15:03:16','2024-05-11 15:03:16'); + """ + test_env_conn.execute_sql(sql=teammate_rel_channel_insert_sql) + teammate_brand_rel_insert_sql = f"""INSERT INTO `rel_customerservice_brand` (customer_service_id,brand_id,company_id,role_name,is_activation,is_delete,create_at,update_at) VALUES + ({teammate_id},{teamData.brandId},{teamData.companyId},"{teamData.teammate_role}",1,0,1715415656,1715415629); +""" + test_env_conn.execute_sql(sql=teammate_brand_rel_insert_sql) + setattr(teamData, 'teammate_id', teammate_id) + + +team_id_list_select_sql = f'select id from `resource_item` where brand_id = {teamData.brandId} and resource_id in (0,1)' +team_id_list_select_result = test_env_conn.select_many_value(sql=team_id_list_select_sql) +team_id_list = tuple([team_id['id'] for team_id in team_id_list_select_result]) + +teammate_select_sql = f'select cs_id from `resource_item_cs_rel` where item_id in {team_id_list}' +teammate_select_result = test_env_conn.select_many_value(sql=teammate_select_sql) + +if teammate_select_result: + teammate_id_list = list(set([teammate_id['cs_id'] for teammate_id in teammate_select_result])) + teammate_num = len(teammate_id_list) + teammate_id_select_sql = f'select * from customer_service where email = "{teamData.teammate_email}"' + teammate_id_select_result = test_env_conn.select_one_value(sql=teammate_id_select_sql) + if teammate_id_select_result: + teammate_id = teammate_id_select_result['id'] + setattr(teamData, 'teammate_id', teammate_id) + else: + insert_teammate() + teammate_num += 1 +else: + insert_teammate() + teammate_num = 1 + +setattr(teamData, 'teammate_num', teammate_num) diff --git a/Utils/req_handler.py b/Utils/req_handler.py index 2e82d91..de18186 100644 --- a/Utils/req_handler.py +++ b/Utils/req_handler.py @@ -7,6 +7,9 @@ import pytest import requests import re import os + +import urllib3.exceptions + from Utils import config_handler from Utils import global_variate from Utils import path_handler @@ -113,6 +116,10 @@ class ReqHandler: except pymysql.err.InterfaceError: print('数据库连接失败') raise pymysql.err.InterfaceError + except urllib3.exceptions.MaxRetryError: + time.sleep(30) #超限时,暂停30秒 + except requests.exceptions.ConnectionError: + time.sleep(30) #超限时,暂停30秒 except Exception as e: import traceback print(traceback.print_exc()) diff --git a/YamlCase/setting/team.yaml b/YamlCase/setting/team.yaml new file mode 100644 index 0000000..33f002c --- /dev/null +++ b/YamlCase/setting/team.yaml @@ -0,0 +1,177 @@ +api1: + title: 新建一个队友 + url: /api/v1/customerService/customerServiceSendInvitation + method: post + data: {"email":"${teammate_email}","role":"${teammate_role}","brand":"${brandName}","hasAllConversation":true,"resourceItemIds":[],"v":"${v}"} + expected: + - eq: {"$.code": 0} + +api2: + title: 查看队友列表 + 检查新建队友是否成功 + url: /api/v1/customerService/listCustomerService + method: post + data: {"isActivation":-1,"isDelete":0,"v":"${v}"} + before_sql: setting/team/teammate_select.py + expected: + - eq: {"$.code": 0} + - in_list: {"$.data.list[*].id": "${teammate_id}"} + - eq: {"$.data.list[?(@.id=='${teammate_id}')].email":"${teammate_email}"} + - eq: {"$.data.list[?(@.id=='${teammate_id}')].hasAllConversation": True} + - eq: {"$.data.list[?(@.id=='${teammate_id}')].role":"${teammate_role}"} +# - exec: {"code": "assert len(res.json()['data']['list']) == ${teammate_num} + 1"} + +api3: + title: 编辑队友信息 + url: /api/v1/customerService/updateCustomerServiceMember + method: post + data: {"email":"${teammate_email}","role":"${new_teammate_role}","id":"${teammate_id}","hasAllConversation":true,"resourceItemIds":[],"v":"${v}"} + expected: + - eq: {"$.code": 0} + +api4: + title: 检查是否编辑成功 + url: /api/v1/customerService/listCustomerService + method: post + data: {"isActivation":-1,"isDelete":0,"v":"${v}"} + expected: + - eq: {"$.code": 0} + - in_list: {"$.data.list[*].id": "${teammate_id}"} + - eq: {"$.data.list[?(@.id=='${teammate_id}')].email":"${teammate_email}"} + - eq: {"$.data.list[?(@.id=='${teammate_id}')].role":"${new_teammate_role}"} + +api5: + title: 新增团队 + url: /api/v1/resource/addResourceItem + method: post + data: {"name":"${team_name}","picture":"","customerServiceId":[],"resourceName":"team","v":"${v}"} + expected: + - eq: {"$.code": 0} + +api6: + title: 检查团队信息 + 检查团队是否新增成功 + url: /api/v1/resource/ownerGetResourceItemList + method: post + data: {"resourceType":"team","v":"${v}"} + before_sql: setting/team/team_select.py + expected: + - eq: {"$.code": 0} + - in_list: {"$.data.list[*].id": "${team_id}"} + - eq: {"$.data.list[?(@.id=='${team_id}')].name":"${team_name}"} + - eq: {"$.data.list[?(@.id=='${team_id}')].members": []} + - eq: {"$.data.list[?(@.id=='${team_id}')].picture":""} + - exec: {"code": "assert len(res.json()['data']['list']) == ${team_num}"} + +api7: + title: 检查团队信息 + 检查团队是否新增成功 + url: /api/v1/resource/getResourceItemList + method: post + data: {"resourceType":"team","v":"${v}"} + expected: + - eq: {"$.code": 0} + - in_list: {"$.data.list[*].id": "${team_id}"} + - eq: {"$.data.list[?(@.id=='${team_id}')].name":"${team_name}"} + - eq: {"$.data.list[?(@.id=='${team_id}')].members": []} + - eq: {"$.data.list[?(@.id=='${team_id}')].picture":""} + - exec: {"code" :"assert len(res.json()['data']['list']) == ${team_num}"} + +api8: + title: 新增团队成员 + url: /api/v1/resource/addResourceItemMember + method: post + data: {"resourceItemId":"${team_id}","customerServiceId":"${teammate_id}","resourceName":"team","v":"${v}"} + expected: + - eq: {"$.code": 0} + +api9: + title: 检查是否新增团队成员成功 + url: /api/v1/resource/ownerGetResourceItemList + method: post + data: {"resourceType":"team","v":"${v}"} + expected: + - eq: {"$.code": 0} + - eq: {"$.data.list[?(@.id=='${team_id}')].memberCount": 1} + - eq: {"$.data.list[?(@.id=='${team_id}')].members[?(@.id=='${teammate_id}')].email": "${teammate_email}"} + +api10: + title: 检查是否新增团队成员成功 + url: /api/v1/resource/getResourceItemList + method: post + data: {"resourceType":"team","v":"${v}"} + expected: + - eq: {"$.code": 0} + - eq: {"$.data.list[?(@.id=='${team_id}')].memberCount": 1} + - eq: {"$.data.list[?(@.id=='${team_id}')].members[?(@.id=='${teammate_id}')].email": "${teammate_email}"} + +api11: + title: 删除团队成员 + url: /api/v1/resource/removeResourceItemMember + method: post + data: {"resourceItemId": "${team_id}","customerServiceId": "${teammate_id}","resourceName": "team","v": "${v}"} + expected: + - eq: {"$.code": 0} + + +api12: + title: 编辑团队信息 + url: /api/v1/resource/updateResourceItem + method: post + data: {"resourceItemId": "${team_id}","name": "${new_team_name}","picture": "","v": "${v}"} + expected: + - eq: { "$.code": 0 } + +api13: + title: 检查是否编辑团队信息成功 + url: /api/v1/resource/ownerGetResourceItemList + method: post + data: {"resourceType": "team","v": "${v}"} + expected: + - eq: {"$.code": 0} + - eq: {"$.data.list[?(@.id=='${team_id}')].name": "${new_team_name}"} + +api14: + title: 检查是否编辑团队信息成功 + url: /api/v1/resource/getResourceItemList + method: post + data: {"resourceType": "team","v": "${v}"} + expected: + - eq: {"$.code": 0} + - eq: {"$.data.list[?(@.id=='${team_id}')].name": "${new_team_name}"} + +api15: + title: 检查是否删除团队成员成功 + url: /api/v1/resource/ownerGetResourceItemList + method: post + data: {"resourceType": "team","v": "${v}"} + expected: + - eq: { "$.code": 0} + - eq: { "$.data.list[?(@.id=='${team_id}')].memberCount": 0} + - eq: {"$.data.list[?(@.id=='${team_id}')].members": []} + +api16: + title: 检查是否删除团队成员成功 + url: /api/v1/resource/getResourceItemList + method: post + data: {"resourceType": "team","v": "${v}"} + expected: + - eq: {"$.code": 0} + - eq: {"$.data.list[?(@.id=='${team_id}')].memberCount": 0} + - eq: {"$.data.list[?(@.id=='${team_id}')].members": []} + + +api17: + title: 删除团队成员 + url: /api/v1/customerService/deleteCustomerServiceMember + method: post + after_sql: setting/team/team_delete.py + data: {"id":"${teammate_id}","assignId":"${userId}","v":"${v}"} + expected: + - eq: {"$.code": 0} + +api18: + title: 检查是否删除团队成员成功 + url: /api/v1/customerService/listCustomerService + method: post + data: {"isActivation":-1,"isDelete":0,"v":"${v}"} + expected: + - eq: {"$.code": 0} + - not_in_list: {"$.data.list[*].id": "${teammate_id}"} \ No newline at end of file -- GitLab