diff --git a/Utils/req_handler.py b/Utils/req_handler.py index 5291650dd15c725184c37359a03fb7e7d9a7e2dc..95146935a2f1e55fa35504003250789719f97d26 100644 --- a/Utils/req_handler.py +++ b/Utils/req_handler.py @@ -114,29 +114,37 @@ class ReqHandler: :param expected: 传入期望结果 :return: ''' - assert res.status_code == 200 #先断言状态码是正确的 - if isinstance(expected,list): - ''' - 穿进来的expected一定是 {"eq":{$.code : value}} 的形式,要断言的值一定是通过jsonpath去检索的 - ''' - for item in expected: #循环每一个断言场景 - for item_key,item_value in item.items(): - 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] - if assert_way == 'eq': #eq代表完全相同 - assert value == res_path_value - elif assert_way == 'not_eq': #not_eq代表不相同 - assert value != res_path_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 - - + try: + assert res.status_code == 200 #先断言状态码是正确的 + if isinstance(expected,list): + ''' + 穿进来的expected一定是 {"eq":{$.code : value}} 的形式,要断言的值一定是通过jsonpath去检索的 + ''' + for item in expected: #循环每一个断言场景 + for item_key,item_value in item.items(): + 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] + if isinstance(res_path_value,str) and '{"contentList":' in res_path_value: + res_path_value = res_path_value.replace('\\','') + if assert_way == 'eq': #eq代表完全相同 + assert value == res_path_value + elif assert_way == 'like': #代表值相同但是type可能不同 + assert str(value) == str(res_path_value) + elif assert_way == 'not_eq': #not_eq代表不相同 + assert value != res_path_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): ''' :param res: 传response请求体 diff --git a/Utils/websocket_handler.py b/Utils/websocket_handler.py index 9c844e55b5049fff6901a0ec94a713bcc03bfe84..407a434b26036ca8a94f675bc582386a093317ad 100644 --- a/Utils/websocket_handler.py +++ b/Utils/websocket_handler.py @@ -39,9 +39,9 @@ class ws: async def send_message(self, message): if self.websocket and self.websocket.open: try: - print('开始发送消息') await self.websocket.send(message) print(f"Sent message: {message}") + time.sleep(0.5) except websockets.ConnectionClosed as e: await self.close() except Exception: @@ -95,10 +95,8 @@ async def ws_action(ws,case): async def ws_send_handler(case,ws): data = case['data'] # 消息数据 - if data['type'] in ['text', 'emoji']: - content = r'{"contentList":"%s","attachmentList":[]}' % data['content'] - else: - content = getattr(livechatData,data['type']) + content = getattr(livechatData,data['type']) #根据type取到对应格式的content + if data['type'] != 'rate': msgType = 'newstext' else: @@ -161,22 +159,28 @@ def ws_assert(expected,msg): :param res: 返回的信息 :return: ''' - for item in expected: # 循环每一个断言场景 - for item_key, item_value in item.items(): - assert_way = item_key - path = list(item_value.keys())[0] # 拿到path路径 - value = list(item_value.values())[0] - res_path_value = jsonpath.jsonpath(msg, path)[0] - if assert_way == 'eq': # eq代表完全相同 - assert value == res_path_value - elif assert_way == 'not_eq': # not_eq代表不相同 - assert value != res_path_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 + try: + for item in expected: # 循环每一个断言场景 + for item_key, item_value in item.items(): + assert_way = item_key + path = list(item_value.keys())[0] # 拿到path路径 + value = list(item_value.values())[0] + res_path_value = jsonpath.jsonpath(msg, path)[0] + if assert_way == 'eq': # eq代表完全相同 + assert value == res_path_value + elif assert_way == 'not_eq': # not_eq代表不相同 + assert value != res_path_value + elif assert_way == 'like': # 代表值相同但是type可能不同 + assert str(value) == str(res_path_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 async def ws_run(ws,case):