最近一直在做Socket
接口测试的实践,一直用的都是Java
或者Groovy
语言编写的功能和脚本。由于端上同事有在学习Python
的,所以帮忙整理了一个Python
版的Socket.IO
接口测试脚本。
Java
版的内容如下:
Python
版没有提供登录功能,因为东西比较多,所以让端上同学用postman
或者Charles
|Fiddler
等工具完成用户登录后的token
获取。
首先要安装Socket.IO
的包,Python
版本是3.7
,使用的pip
方式进行安装,命令行如下:pip3 install python-socketio
。这里网上教程很多,不多赘述。
脚本内容如下:
import socketio
import time
# wiki地址:http://wiki.okjiaoyu.cn/pages/viewpage.action?spaceKey=RJBK&title=ailearn-instruction-svr
def func(token="", uid=0, room=0):
sio = socketio.Client()
event = 'my_event'
@sio.event()
def my_response(data):
# handle the message
# sio.emit('my_event', {"cmd": "joinRoom", "roomId": 8888})
print(data)
@sio.event
def connect():
print("I'm connected!")
@sio.event
def connect_error():
print("The connection failed!")
@sio.event
def disconnect():
print("I'm disconnected!")
url = 'http://ailearn-instruction-stress.xk12.cn:38999/?systemId={uid}&loginType=3&token={token}&userType=1'
# dev环境的URL地址,端口38899
# url = 'http://ailearn-instruction-dev.xk12.cn:38899/?systemId={uid}&loginType=3&token={token}&userType=1'
url = url.format(uid=uid, token=token)
sio.connect(
url,transports=["websocket"])
print('my sid is', sio.sid)
time.sleep(3)
# 必需进行注册和加入room操作,room等于发布教学活动的activityid
sio.emit(event, {"cmd": "register", "userId": uid, "role": "T", "deviceVersion": "1.0","s_sid": sio.sid, "token": token})
sio.emit(event, {"cmd": "joinRoom", "roomId": room})
time.sleep(3)
if __name__ == '__main__':
func(token="519594cc8e3a4bd68679b2b613c20536", uid=61951375269, room=43548)
水平有限,只能写个大致的脚本,勉强跑通,仅供参考。