Commit 53b30b5e authored by zhanhuasheng's avatar zhanhuasheng

新增用例

parent 46570925
......@@ -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'
......
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)
from Utils.global_variate import Global
class teamData(Global):
pass
# brandId = 6052
# shopId = 7238
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
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))
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.
......@@ -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代表完全相同
......
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}"}
......@@ -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() #关闭数据库链接
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment