diff --git a/TestCase/inbox/test_04_ticketInfo.py b/TestCase/inbox/test_04_ticketInfo.py index a5d18bf4de7e93a816d869d292bea9ae0dd6ca8e..6159be5f70212ca0a236c1ed599229df39e260a5 100644 --- a/TestCase/inbox/test_04_ticketInfo.py +++ b/TestCase/inbox/test_04_ticketInfo.py @@ -3,10 +3,6 @@ from Utils import yaml_handler from Utils import req_handler from TestData.inbox.ticketInfo_test_data import ticketInfoData -''' -这个文件和ticketStatus公用一个变量类 -''' - class TestTicketInfo: yaml_path = r'inbox\ticketInfo.yaml' diff --git a/TestCase/inbox/test_05_team.py b/TestCase/inbox/test_05_team.py new file mode 100644 index 0000000000000000000000000000000000000000..8ed584480126b270bab9d72b49ebf47e76fb3cc2 --- /dev/null +++ b/TestCase/inbox/test_05_team.py @@ -0,0 +1,13 @@ +import pytest +from Utils import yaml_handler +from Utils import req_handler +from TestData.inbox.team_test_data import teamData + +class TestTeam: + + yaml_path = r'inbox\team.yaml' + yaml_data = yaml_handler.yaml_handler.get_case(yaml_path) + @pytest.mark.parametrize('case',yaml_data) + def test_team(self,case): + print(case) + req_handler.ReqHandler.send_requests(case=case,var_class=teamData) diff --git a/TestData/inbox/team_test_data.py b/TestData/inbox/team_test_data.py new file mode 100644 index 0000000000000000000000000000000000000000..b9bf78cca0cb4dd817b33d5690274c3b7c529b2e --- /dev/null +++ b/TestData/inbox/team_test_data.py @@ -0,0 +1,7 @@ +from Utils.global_variate import Global + +class teamData(Global): + pass + # brandId = 6052 + # shopId = 7238 + diff --git a/TestFile/inbox/team_delete.py b/TestFile/inbox/team_delete.py new file mode 100644 index 0000000000000000000000000000000000000000..a37c1907d92351d6ed81a6a209063ab99f3e982a --- /dev/null +++ b/TestFile/inbox/team_delete.py @@ -0,0 +1,5 @@ +from Utils.sql_handler import test_env_conn +from TestData.inbox.team_test_data import teamData + +room_delete_sql = f'delete from `resource_room_rel` where room_id = {teamData.other_room_id}' +test_env_conn.execute_sql(sql=room_delete_sql) \ No newline at end of file diff --git a/TestFile/inbox/team_select.py b/TestFile/inbox/team_select.py new file mode 100644 index 0000000000000000000000000000000000000000..4932a83948d679d995ba1edc70604d40db56ffc8 --- /dev/null +++ b/TestFile/inbox/team_select.py @@ -0,0 +1,54 @@ +from Utils.sql_handler import test_env_conn +from TestData.inbox.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) + +team_num = len(team_select_result) +team_id = team_select_result[0]['id'] +team_name = team_select_result[0]['name'] +setattr(teamData, 'team_num', team_num) +setattr(teamData, 'team_id', team_id) +setattr(teamData, 'team_name', team_name) +team_room_list_select_sql = f'select room_id from `resource_room_rel` where item_id = {team_id}' +team_room_list_select_result = test_env_conn.select_many_value(sql=team_room_list_select_sql) +team_room_list = tuple(i['room_id'] for i in team_room_list_select_result) + +if team_room_list != (): + open_room_select_sql = f'select * from `im_room` where room_id in {team_room_list} and status = 1' + open_room_select_result = test_env_conn.select_many_value(sql=open_room_select_sql) + pending_room_select_sql = f'select * from `im_room` where room_id in {team_room_list} and status = 2' + pending_room_select_result = test_env_conn.select_many_value(sql=pending_room_select_sql) + close_room_select_sql = f'select * from `im_room` where room_id in {team_room_list} and status = 3' + close_room_select_result = test_env_conn.select_many_value(sql=close_room_select_sql) + setattr(teamData, 'open_room_num', len(open_room_select_result)) + setattr(teamData, 'pending_room_num', len(pending_room_select_result)) + setattr(teamData, 'close_room_num', len(close_room_select_result)) + other_room_select_sql = f'select * from `im_room` where room_id not in {team_room_list} and site_id = {teamData.shopId} and status = 1 limit 10' +else: + setattr(teamData, 'open_room_num', 0) + setattr(teamData, 'pending_room_num', 0) + setattr(teamData, 'close_room_num', 0) + other_room_select_sql = f'select * from `im_room` where `cate_id` = {teamData.brandId} and site_id = {teamData.shopId} and status = 1 limit 10' + +other_room_select_result = test_env_conn.select_one_value(sql=other_room_select_sql) +setattr(teamData, 'other_room_id', other_room_select_result['room_id']) +setattr(teamData, 'open_room_num_add' , teamData.open_room_num + 1) + +team_member_select_sql = f'select * from `resource_item_cs_rel` where item_id = {team_id}' +team_member_select_result = test_env_conn.select_many_value(sql=team_member_select_sql) +team_member_num = len(team_member_select_result) +team_member_id = team_member_select_result[0]['cs_id'] +setattr(teamData, 'team_member_num', team_member_num) +setattr(teamData, 'team_member_id', team_member_id) +team_member_info_select_sql = f'select * from `customer_service` where id = {team_member_id}' +team_member_info_select_result = test_env_conn.select_one_value(sql=team_member_info_select_sql) +setattr(teamData, 'team_member_name', team_member_info_select_result['name']) +setattr(teamData, 'team_member_image', team_member_info_select_result['profile']) +setattr(teamData, 'team_member_email', team_member_info_select_result['email']) + + +team_member_open_room_select_sql = f'select * from `im_room` where room_id in {team_room_list} and status = 1 and allocation_uid = {team_member_id}' +team_member_open_room_select_result = test_env_conn.select_many_value(sql=team_member_open_room_select_sql) +setattr(teamData, 'team_member_open_room_num', len(team_member_open_room_select_result)) + diff --git a/TestLog/2024-03-22_log.log b/TestLog/2024-03-22_log.log new file mode 100644 index 0000000000000000000000000000000000000000..205a9282c470e167520d608db27cf2ae7b60f653 --- /dev/null +++ b/TestLog/2024-03-22_log.log @@ -0,0 +1,4 @@ +2024-03-22 16:14:59,138 [INFO] in log_handler (line 30): __main__ - Info +This is an info message. +2024-03-22 16:14:59,139 [ERROR] in log_handler (line 37): __main__ - Error +This is an error message. diff --git a/Utils/req_handler.py b/Utils/req_handler.py index 314950c58871dd0794a64d7a8f0f3e74222b8b48..1754619d28748fd58fd5e2824f0e5051d89c80a5 100644 --- a/Utils/req_handler.py +++ b/Utils/req_handler.py @@ -29,6 +29,8 @@ class ReqHandler: case = case.replace(r"'${%s}'"%word,str(value)) #替换掉${}变量符 else: case = case.replace(r"${%s}"%word,str(value)) #替换掉${}变量符 + if re.findall(r'\$\{(.+?)\}',case): #保底 + case = case.replace(r'${%s}'%word,str(value)) except Exception: import traceback print(traceback.print_exc()) @@ -116,6 +118,7 @@ class ReqHandler: :param expected: 传入期望结果 :return: ''' + try: assert res.status_code == 200 #先断言状态码是正确的 if isinstance(expected,list): @@ -127,7 +130,7 @@ class ReqHandler: assert_way = item_key path = list(item_value.keys())[0] #拿到path路径 value = list(item_value.values())[0] - res_path_value = jsonpath.jsonpath(res.json(),path)[0] + res_path_value = jsonpath.jsonpath(res.json(),path)[0] if str(path)[0:2] == '$.' else path 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代表完全相同 diff --git a/YamlCase/inbox/team.yaml b/YamlCase/inbox/team.yaml new file mode 100644 index 0000000000000000000000000000000000000000..e0a830c7864a1385737b4e45a787822d2b90ce6e --- /dev/null +++ b/YamlCase/inbox/team.yaml @@ -0,0 +1,62 @@ +api1: + title: 检查团队信息 + url: /api/v1/resource/getResourceItemList + method: post + before_sql: inbox/team_select.py + data: {"resourceType":"team","v":"${v}"} + expected: + - eq: {"$.code" : 0} + - eq: {"$.data.list[?(@.id == '${team_id}')].name" : "${team_name}"} + + +api2: + title: 检查会话状态数量 + url: /api/v1/chat/local/count + method: post + data: {"uid":"${userId}","uType":2,"platform":1,"siteIds":["${shopId}"],"keyword":"","countType":["all","unread","mention","assigned","unassigned","'${team_id}'"],"v":"${v}"} + expected: + - eq: {"$.code" : 0} + - eq: {"$.data.list.${team_id}.openCount" : "${open_room_num}"} + - eq: {"$.data.list.${team_id}.waitCount" : "${pending_room_num}"} + - eq: {"$.data.list.${team_id}.closeCount" : "${close_room_num}"} + +api3: + title: 分配一个会话给团队 + url: /api/v1/resource/roomAssignToResourceItem + method: post + data: {"roomId":"'${other_room_id}'","srcResourceItemId":0,"distResourceItemId":"${team_id}","v":"${v}"} + expected: + - eq: {"$.code" : 0} + +api4: + title: 检查团队会话是否增加 + url: /api/v1/chat/local/count + method: post + data: {"uid":"${userId}","uType":2,"platform":1,"siteIds":["${shopId}"],"keyword":"","countType":["all","unread","mention","assigned","unassigned","'${team_id}'"],"v":"${v}"} + after_sql: inbox/team_delete.py + expected: + - eq: { "$.code": 0 } + - eq: { "$.data.list.${team_id}.openCount": "${open_room_num_add}" } + +api5: + title: 检查团队会话是否移除 + url: /api/v1/chat/local/count + method: post + data: {"uid":"${userId}","uType":2,"platform":1,"siteIds":["${shopId}"],"keyword":"","countType":["all","unread","mention","assigned","unassigned","'${team_id}'"],"v":"${v}"} + expected: + - eq: { "$.code": 0 } + - eq: { "$.data.list.${team_id}.openCount": "${open_room_num}" } + +api6: + title: 检查团队成员信息 + url: /api/v1/resource/getResourceItemList + method: post + data: {"resourceType":"team","v":"${v}"} + expected: + - eq: {"$.code" : 0} + - eq: {"$.data.list[?(@.id == '${team_id}')].members[?(@.id == '${team_member_id}')].name" : "${team_member_name}"} + - eq: {"$.data.list[?(@.id == '${team_id}')].members[?(@.id == '${team_member_id}')].email" : "${team_member_email}"} + - eq: {"$.data.list[?(@.id == '${team_id}')].members[?(@.id == '${team_member_id}')].profile" : "${team_member_image}"} + - eq: {"$.data.list[?(@.id == '${team_id}')].members[?(@.id == '${team_member_id}')].openedRoomCount" : "${team_member_open_room_num}"} + + diff --git a/main.py b/main.py index a3411661ee8e4f2fcdd528848aaeecd04ba2b6d6..ddd4d2a9898fa4d9f1dfb12b838dcc639a3aa60b 100644 --- a/main.py +++ b/main.py @@ -4,7 +4,7 @@ from Utils.sql_handler import test_env_conn if __name__ == '__main__': try: - pytest.main(['-vs',f'--alluredir=./allureReports','--clean-alluredir']) + pytest.main(['-vs',r'C:\Users\rd71\PycharmProjects\willdesk_api_auto\TestCase\inbox\test_05_team.py',f'--alluredir=./allureReports','--clean-alluredir']) finally: test_env_conn.close_db() #关闭数据库链接