Commit 3d7f72c3 authored by zhanhuasheng's avatar zhanhuasheng

兼容websocket消息收发断言

parent 21fc9e89
...@@ -114,6 +114,7 @@ class ReqHandler: ...@@ -114,6 +114,7 @@ class ReqHandler:
:param expected: 传入期望结果 :param expected: 传入期望结果
:return: :return:
''' '''
try:
assert res.status_code == 200 #先断言状态码是正确的 assert res.status_code == 200 #先断言状态码是正确的
if isinstance(expected,list): if isinstance(expected,list):
''' '''
...@@ -125,8 +126,12 @@ class ReqHandler: ...@@ -125,8 +126,12 @@ class ReqHandler:
path = list(item_value.keys())[0] #拿到path路径 path = list(item_value.keys())[0] #拿到path路径
value = list(item_value.values())[0] 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 isinstance(res_path_value,str) and '{"contentList":' in res_path_value:
res_path_value = res_path_value.replace('\\','')
if assert_way == 'eq': #eq代表完全相同 if assert_way == 'eq': #eq代表完全相同
assert value == res_path_value assert value == res_path_value
elif assert_way == 'like': #代表值相同但是type可能不同
assert str(value) == str(res_path_value)
elif assert_way == 'not_eq': #not_eq代表不相同 elif assert_way == 'not_eq': #not_eq代表不相同
assert value != res_path_value assert value != res_path_value
elif assert_way == 'almost': #almonst代表四舍五入后相同就判断为一致 elif assert_way == 'almost': #almonst代表四舍五入后相同就判断为一致
...@@ -135,8 +140,11 @@ class ReqHandler: ...@@ -135,8 +140,11 @@ class ReqHandler:
assert value in res_path_value assert value in res_path_value
elif assert_way == 'ain': elif assert_way == 'ain':
assert res_path_value in value assert res_path_value in value
except AssertionError:
print(f'期望值为{value}{type(value)}),实际返回值为{res_path_value}{type(res_path_value)}),完整的expected体为{expected}')
raise AssertionError
except Exception as e:
print(e,'-----------------')
def set_value_handler(self,res,item,var_class): def set_value_handler(self,res,item,var_class):
''' '''
:param res: 传response请求体 :param res: 传response请求体
......
...@@ -39,9 +39,9 @@ class ws: ...@@ -39,9 +39,9 @@ class ws:
async def send_message(self, message): async def send_message(self, message):
if self.websocket and self.websocket.open: if self.websocket and self.websocket.open:
try: try:
print('开始发送消息')
await self.websocket.send(message) await self.websocket.send(message)
print(f"Sent message: {message}") print(f"Sent message: {message}")
time.sleep(0.5)
except websockets.ConnectionClosed as e: except websockets.ConnectionClosed as e:
await self.close() await self.close()
except Exception: except Exception:
...@@ -95,10 +95,8 @@ async def ws_action(ws,case): ...@@ -95,10 +95,8 @@ async def ws_action(ws,case):
async def ws_send_handler(case,ws): async def ws_send_handler(case,ws):
data = case['data'] # 消息数据 data = case['data'] # 消息数据
if data['type'] in ['text', 'emoji']: content = getattr(livechatData,data['type']) #根据type取到对应格式的content
content = r'{"contentList":"%s","attachmentList":[]}' % data['content']
else:
content = getattr(livechatData,data['type'])
if data['type'] != 'rate': if data['type'] != 'rate':
msgType = 'newstext' msgType = 'newstext'
else: else:
...@@ -161,6 +159,7 @@ def ws_assert(expected,msg): ...@@ -161,6 +159,7 @@ def ws_assert(expected,msg):
:param res: 返回的信息 :param res: 返回的信息
:return: :return:
''' '''
try:
for item in expected: # 循环每一个断言场景 for item in expected: # 循环每一个断言场景
for item_key, item_value in item.items(): for item_key, item_value in item.items():
assert_way = item_key assert_way = item_key
...@@ -171,12 +170,17 @@ def ws_assert(expected,msg): ...@@ -171,12 +170,17 @@ def ws_assert(expected,msg):
assert value == res_path_value assert value == res_path_value
elif assert_way == 'not_eq': # not_eq代表不相同 elif assert_way == 'not_eq': # not_eq代表不相同
assert value != res_path_value assert value != res_path_value
elif assert_way == 'like': # 代表值相同但是type可能不同
assert str(value) == str(res_path_value)
elif assert_way == 'almost': # almonst代表四舍五入后相同就判断为一致 elif assert_way == 'almost': # almonst代表四舍五入后相同就判断为一致
assert round(value, 2) == round(res_path_value, 2) assert round(value, 2) == round(res_path_value, 2)
elif assert_way == 'in': # in代表断言值在返回值中 elif assert_way == 'in': # in代表断言值在返回值中
assert value in res_path_value assert value in res_path_value
elif assert_way == 'ain': elif assert_way == 'ain':
assert res_path_value in value assert res_path_value in value
except AssertionError:
print(f'期望值为{value}{type(value)}),实际返回值为{res_path_value}{type(res_path_value)}),完整的expected体为{expected}')
raise AssertionError
async def ws_run(ws,case): async def ws_run(ws,case):
......
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