Commit 3d7f72c3 authored by zhanhuasheng's avatar zhanhuasheng

兼容websocket消息收发断言

parent 21fc9e89
...@@ -114,29 +114,37 @@ class ReqHandler: ...@@ -114,29 +114,37 @@ class ReqHandler:
:param expected: 传入期望结果 :param expected: 传入期望结果
:return: :return:
''' '''
assert res.status_code == 200 #先断言状态码是正确的 try:
if isinstance(expected,list): assert res.status_code == 200 #先断言状态码是正确的
''' if isinstance(expected,list):
穿进来的expected一定是 {"eq":{$.code : value}} 的形式,要断言的值一定是通过jsonpath去检索的 '''
''' 穿进来的expected一定是 {"eq":{$.code : value}} 的形式,要断言的值一定是通过jsonpath去检索的
for item in expected: #循环每一个断言场景 '''
for item_key,item_value in item.items(): for item in expected: #循环每一个断言场景
assert_way = item_key for item_key,item_value in item.items():
path = list(item_value.keys())[0] #拿到path路径 assert_way = item_key
value = list(item_value.values())[0] path = list(item_value.keys())[0] #拿到path路径
res_path_value = jsonpath.jsonpath(res.json(),path)[0] value = list(item_value.values())[0]
if assert_way == 'eq': #eq代表完全相同 res_path_value = jsonpath.jsonpath(res.json(),path)[0]
assert value == res_path_value if isinstance(res_path_value,str) and '{"contentList":' in res_path_value:
elif assert_way == 'not_eq': #not_eq代表不相同 res_path_value = res_path_value.replace('\\','')
assert value != res_path_value if assert_way == 'eq': #eq代表完全相同
elif assert_way == 'almost': #almonst代表四舍五入后相同就判断为一致 assert value == res_path_value
assert round(value,2) == round(res_path_value,2) elif assert_way == 'like': #代表值相同但是type可能不同
elif assert_way == 'in': #in代表断言值在返回值中 assert str(value) == str(res_path_value)
assert value in res_path_value elif assert_way == 'not_eq': #not_eq代表不相同
elif assert_way == 'ain': assert value != res_path_value
assert res_path_value in value elif assert_way == 'almost': #almonst代表四舍五入后相同就判断为一致
assert round(value,2) == round(res_path_value,2)
elif assert_way == 'in': #in代表断言值在返回值中
assert value in res_path_value
elif assert_way == 'ain':
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,22 +159,28 @@ def ws_assert(expected,msg): ...@@ -161,22 +159,28 @@ def ws_assert(expected,msg):
:param res: 返回的信息 :param res: 返回的信息
:return: :return:
''' '''
for item in expected: # 循环每一个断言场景 try:
for item_key, item_value in item.items(): for item in expected: # 循环每一个断言场景
assert_way = item_key for item_key, item_value in item.items():
path = list(item_value.keys())[0] # 拿到path路径 assert_way = item_key
value = list(item_value.values())[0] path = list(item_value.keys())[0] # 拿到path路径
res_path_value = jsonpath.jsonpath(msg, path)[0] value = list(item_value.values())[0]
if assert_way == 'eq': # eq代表完全相同 res_path_value = jsonpath.jsonpath(msg, path)[0]
assert value == res_path_value if assert_way == 'eq': # eq代表完全相同
elif assert_way == 'not_eq': # not_eq代表不相同 assert value == res_path_value
assert value != res_path_value elif assert_way == 'not_eq': # not_eq代表不相同
elif assert_way == 'almost': # almonst代表四舍五入后相同就判断为一致 assert value != res_path_value
assert round(value, 2) == round(res_path_value, 2) elif assert_way == 'like': # 代表值相同但是type可能不同
elif assert_way == 'in': # in代表断言值在返回值中 assert str(value) == str(res_path_value)
assert value in res_path_value elif assert_way == 'almost': # almonst代表四舍五入后相同就判断为一致
elif assert_way == 'ain': assert round(value, 2) == round(res_path_value, 2)
assert res_path_value in value elif assert_way == 'in': # in代表断言值在返回值中
assert value in res_path_value
elif assert_way == 'ain':
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