diff --git a/TestCase/account/test_account_01.py b/TestCase/account/test_account_01.py
index 6e76ed516c0ce86d46fe0f049307a0f6ff684213..f76135de7071532d5c05589128a2a1177d1cc1d4 100644
--- a/TestCase/account/test_account_01.py
+++ b/TestCase/account/test_account_01.py
@@ -9,6 +9,5 @@ class TestAccount:
yaml_data = yaml_handler.yaml_handler.get_case(yaml_path)
@pytest.mark.parametrize('case',yaml_data)
def test_account(self,case):
- # case = req_handler.ReqHandler.params_handler(case=case,var_class=accountData) #替换变量
req_handler.ReqHandler.send_requests(case=case,var_class=accountData)
print(case)
\ No newline at end of file
diff --git a/TestCase/billing/test_buyPlan_01.py b/TestCase/billing/test_buyPlan_01.py
index 4e2be5d1c9a09543344cd67576795e563dc1bb84..c785471f571ac1d5e5ae2b300de3f7bee1a9ba93 100644
--- a/TestCase/billing/test_buyPlan_01.py
+++ b/TestCase/billing/test_buyPlan_01.py
@@ -9,6 +9,5 @@ class TestBuyPlan:
yaml_data = yaml_handler.yaml_handler.get_case(yaml_path)
@pytest.mark.parametrize('case',yaml_data)
def test_buy_plan(self,case):
- case = req_handler.ReqHandler.params_handler(case=case,var_class=buyPlanData) #替换变量
req_handler.ReqHandler.send_requests(case=case,var_class=buyPlanData)
print(case)
\ No newline at end of file
diff --git a/Utils/req_handler.py b/Utils/req_handler.py
index 69f4535d79703f73746fe50f5f8d1c212d631e18..5291650dd15c725184c37359a03fb7e7d9a7e2dc 100644
--- a/Utils/req_handler.py
+++ b/Utils/req_handler.py
@@ -60,7 +60,7 @@ class ReqHandler:
encoding='utf8') as f:
content = f.read()
exec(content)
- return
+ return 1
url = case['url'] if 'http' in case['url'] else config_handler.base_config.get_value('url','test_address') + case['url'] #判断是否有域名,没有的话给config文件中的默认测试域名
method = case['method']
expected = case['expected']
@@ -72,7 +72,6 @@ class ReqHandler:
if case.get('headers'):
for key,value in case['headers'].items():
headers[key] = value
-
if method == 'post':
if headers.get('content-type') == 'application/x-www-form-urlencoded' or headers.get('content-type') == 'text/xml':
res = requests.request(url=url,method=method,data=data,headers=headers)
@@ -84,31 +83,6 @@ class ReqHandler:
res = requests.request(url=url,method=method,data=data,headers=headers)
self.assert_handler(self,res=res,expected=expected)
if case.get('set_value'):
- import random
- async def test_recv():
- data = json.dumps({
- 'action': "sendmsg",
- 'data': {
- 'avatar': "https://img.willdesk.com/${picUrl}",
- 'clientId': websocket_handler.ws_willdesk.client_id,
- 'fromId': '35948', #c端userId
- 'isNote': False,
- 'message': '{\"contentList\":\"testtesttest
\",\"attachmentList\":[]}',
- 'msgType': 'newstext',
- 'platform': 1,
- 'roomChannelType': 'wk',
- 'roomId': '502856393624136484',
- 'roomPlatform': 'willdesk',
- 'siteId': '7238', #店铺id
- 'uType': 2,
- 'uid': '5746', #userId
- 'username': 'zhs' #品牌名称
- },
- 'seq': str(random.randint(1000000000000000, 9999999999999999))
- })
- await websocket_handler.ws_willdesk.send_message(data)
- # await websocket_handler.ws_willdesk.receive_message()
- asyncio.run(test_recv())
self.set_value_handler(self,res=res,item=case['set_value'],var_class=var_class)
if case.get('after_sql'):
sql = case['after_sql']
@@ -129,8 +103,9 @@ class ReqHandler:
ws = case['ws'] # 操作端
if ws not in ['willdesk', 'customer']:
raise Exception('websocket操作端填写有误')
- websocket = websocket_handler.ws_willdesk if ws == 'willdesk' else websocket_handler.ws_customer
- websocket_handler.ws_run(ws=websocket,case=case)
+ websocket = websocket_handler.ws_willdesk if ws == 'willdesk' else websocket_handler.ws_client
+ # websocket_handler.ws_run(ws=websocket,case=case)
+ websocket_handler.loop.run_until_complete(websocket_handler.ws_run(ws=websocket, case=case))
def assert_handler(self,res,expected):
'''
diff --git a/Utils/websocket_handler.py b/Utils/websocket_handler.py
index 4748cbacb24c2d65975a3831b29d66007ddc3e39..7b2652d7695ca2b6e5d08acb9920e53740a41271 100644
--- a/Utils/websocket_handler.py
+++ b/Utils/websocket_handler.py
@@ -2,6 +2,10 @@ import asyncio
import websockets
import time,random,json,jsonpath
from Utils.global_variate import Global
+from TestData.inbox.livechat_test_data import livechatData
+
+loop = asyncio.get_event_loop() #异步主线
+
class ws:
def __init__(self, url, attr):
@@ -9,20 +13,25 @@ class ws:
self.websocket = None
self.loop = asyncio.get_event_loop()
self.client_id = ''
+ self.attr = attr
+ async def get_client_id(self):
+ if not self.websocket:
+ self.websocket = await websockets.connect(self.url)
+ enter_res = json.loads(await self.websocket.recv())
+ if enter_res.get('action'):
+ if enter_res['action'] in ['readMsg', 'tipmsg']:
+ self.client_id = enter_res['data']['clientId']
+ elif enter_res['action'] == 'sendmsg':
+ self.client_id = enter_res['data']['response']['clientId']
+ else: # action是heartbeat的情况
+ self.client_id = enter_res['data']['cliend']
+ else: # action是enter的情况
+ self.client_id = enter_res['data']['clientId']
async def connect(self):
try:
self.websocket = await websockets.connect(self.url)
- enter_res = eval(await self.websocket.recv())
- if enter_res.get('action'):
- if enter_res['action'] in ['readMsg','tipmsg']:
- self.client_id = enter_res['data']['clientId']
- elif enter_res['action'] =='sendmsg':
- self.client_id = enter_res['data']['response']['clientId']
- else: #action是heartbeat的情况
- self.client_id = enter_res['data']['cliend']
- else: #action是enter的情况
- self.client_id = enter_res['data']['clientId']
+ await self.get_client_id()
# print(f"Connected to {self.url}")
except websockets.ConnectionClosed as e:
await self.close()
@@ -37,9 +46,8 @@ class ws:
await self.close()
except Exception:
print('error')
-
else:
- # print('send重新链接')
+ print('send重新链接')
await self.connect()
await self.send_message(message)
@@ -54,14 +62,13 @@ class ws:
await self.close()
except NameError:
return message
+ except Exception as e:
+ print(e)
else:
print('receive重新链接')
await self.connect()
return await self.receive_message()
- def ws_sendmsg(self,case):
- pass
-
async def close(self):
if self.websocket:
await self.websocket.close()
@@ -74,42 +81,36 @@ async def ws_action(ws,case):
:param case: 传入用例数据
'''
action = case['action'] #操作
- expected = case['expected'] #断言
if action == 'sendmsg':
- response = ws_send_handler(case=case,ws=ws)
+ response = await ws_send_handler(case=case,ws=ws)
assert response['response']['code'] == 200
assert response['action'] == 'sendmsg'
elif action == 'receive':
+ expected = case['expected'] # 断言
+ if ws.client_id == '':
+ await ws.get_client_id()
+ msg = json.loads(await ws.receive_message())
+ ws_assert(expected=expected,msg=msg)
- msg = await ws.receive_message()
- while msg['action'] == 'heartbeat':
- time.sleep(0.1)
- msg = await ws.receive_message()
- result = ws_assert(expected=expected,msg=msg)
- assert result
-
-def ws_send_handler(case,ws):
- if case.get('file'):
- '''预留文件处理区'''
+async def ws_send_handler(case,ws):
data = case['data'] # 消息数据
msgType = 'newstext'
if data['type'] in ['text', 'emoji']:
content = r'{"contentList":"%s","attachmentList":[]}' % data['content']
- elif data['type'] == 'picture':
- content = r'{"contentList":"
Would you mind sharing your feedback on your experience so fa222r?
","thumbsReviews":{"good":"","bad":"FeedbackURL"},"startReviews":{"one_start":"FeedbackURL","two_start":"FeedbackURL","three_start":"FeedbackURL","four_start":"","five_start":"www.baidu.com"},"reviewTitle":"How was your chat with {AgentName}222?","reviewChoose":"thumbs","askSendReview":"true","autoSendReview":"false","primaryColor":"#2C23E5"}]' + content = r'[&*{"reviewContent":"%s","thumbsReviews":{"good":"","bad":"FeedbackURL"},"startReviews":{"one_start":"FeedbackURL","two_start":"FeedbackURL","three_start":"FeedbackURL","four_start":"","five_start":"www.baidu.com"},"reviewTitle":"%s","reviewChoose":"thumbs","askSendReview":"true","autoSendReview":"false","primaryColor":"#2C23E5"}]'%(livechatData.rateContent,livechatData.rateTitle) msgType = 'rate' elif data['type'] == 'link': - content = r'{"contentList":"test","attachmentList":[]}' + content = "{\"contentList\":\"%s\",\"attachmentList\":[]}"%(livechatData.linkHref,livechatData.linkTitle) elif data['type'] == 'product': - content = r'{"contentList":"