本文节选自霍格沃兹测试学院内部教材
WebSocket 是一种在单个 TCP 连接上进行全双工通信(Full Duplex
是通讯传输的一个术语。通信允许数据在两个方向上同时传输,它在能力上相当于两个单工通信方式的结合。全双工指可以同时(瞬时)进行信号的双向传输( A→B 且
B→A )。指 A→B 的同时 B→A,是瞬时同步的)的协议。
WebSocket 通信协议于 2011 年被 IETF 定为标准 RFC 6455,并由 RFC7936 补充规范。WebSocket API
(WebSocket API 是一个使用WebSocket 协议的接口,通过它来建立全双工通道来收发消息) 也被 W3C 定为标准。
而 HTTP 协议就不支持持久连接,虽然在 HTTP1.1 中进行了改进,使得有一个 keep-alive,在一个 HTTP 连接中,可以发送多个
Request,接收多个 Response。
但是在 HTTP 中 Request = Response 永远是成立的,也就是说一个 request
只能有一个response。而且这个response也是被动的,不能主动发起。
websocket 常用于社交/订阅、多玩家游戏、协同办公/编辑、股市基金报价、体育实况播放、音视频聊天/视频会议/在线教育、智能家居与基于位置的应用。
websocket 接口不能使用 requests 直接进行接口的调用,可以依赖第三方库的方式来实现调用,以下内容介绍如何调用第三方库实现
websocket 的接口自动化测试。
实战
使用 python 语言实现 websocket 的接口自动化
环境准备
- 安装 pyhton3 环境下载需要的运行库
- 下载需要的运行库
pip install websocket-client
实战演示
- 连接 websoket 服务器
import loggingfrom websocket import create_connectionlogger = logging.getLogger(__name__)url = 'ws://echo.websocket.org/' #一个在线的回环websocket接口,必须以websocket的方式连接后访问,无法直接在网页端输入该地址访问wss = create_connection(url, timeout=timeout)
-
发送 websocket 消息
wss.send('Hello World')
-
接收 websocket