用Python进行websocket接口测试


Posted in Python onOctober 16, 2020

我们在做接口测试时,除了常见的http接口,还有一种比较多见,就是socket接口,今天讲解下怎么用Python进行websocket接口测试。

现在大多数用的都是websocket,那我们就先来安装一下websocket的安装包。

pip install websocket-client

用Python进行websocket接口测试

安装完之后,我们就开始我们的websocket之旅了。

我们先来看个炒鸡简单的栗子:

import websocket
ws = websocket.WebSocket()
ws.connect("ws://example.com/websocket", 
      http_proxy_host="proxy_host_name", 
      http_proxy_port=3128)

这个栗子就是创建一个websocket连接,这个模块支持通过http代理访问websocket。代理服务器允许使用connect方法连接到websocket端口。默认的squid设置是“只允许连接HTTPS端口”。

在websocket里,我们有常用的这几个方法:

on_message方法:

def on_message(ws, message):
  print(message)

on_message是用来接受消息的,server发送的所有消息都可以用on_message这个方法来收取。

on_error方法:

def on_error(ws, error):
  print(error)

这个方法是用来处理错误异常的,如果一旦socket的程序出现了通信的问题,就可以被这个方法捕捉到。

on_open方法:

def on_open(ws):
  def run(*args):
    for i in range(30):
      # send the message, then wait
      # so thread doesn't exit and socket
      # isn't closed
      ws.send("Hello %d" % i)
      time.sleep(1)

    time.sleep(1)
    ws.close()
    print("Thread terminating...")

  Thread(target=run).start()

on_open方法是用来保持连接的,上面这样的一个例子,就是保持连接的一个过程,每隔一段时间就会来做一件事,他会在30s内一直发送hello。最后停止。

on_close方法:

def on_close(ws):
  print("### closed ###")

onclose主要就是关闭socket连接的。

如何创建一个websocket应用:

ws = websocket.WebSocketApp("wss://echo.websocket.org")

括号里面就是你要连接的socket的地址,在WebSocketApp这个实例化的方法里面还可以有其他参数,这些参数就是我们刚刚介绍的这些方法。

ws = websocket.WebSocketApp("ws://echo.websocket.org/",
              on_message=on_message,
              on_error=on_error,
              on_close=on_close)

指定了这些参数之后就可以直接进行调用了,例如:

ws.on_open = on_open

这样就是调用了on_open方法

如果我们想让我们的socket保持长连接,一直连接着,就可以使用run_forever方法:

ws.run_forever()

完整代码:

import websocket
from threading import Thread
import time
import sys

def on_message(ws, message):
  print(message)

def on_error(ws, error):
  print(error)

def on_close(ws):
  print("### closed ###")

def on_open(ws):
  def run(*args):
    for i in range(3):
      # send the message, then wait
      # so thread doesn't exit and socket
      # isn't closed
      ws.send("Hello %d" % i)
      time.sleep(1)

    time.sleep(1)
    ws.close()
    print("Thread terminating...")

  Thread(target=run).start()


if __name__ == "__main__":

  websocket.enableTrace(True)
  host = "ws://echo.websocket.org/"
  ws = websocket.WebSocketApp(host,
                on_message=on_message,
                on_error=on_error,
                on_close=on_close)
  ws.on_open = on_open
  ws.run_forever()

如果想要通信一条短消息,并在完成后立即断开连接,我们可以使用短连接:

from websocket import create_connection
ws = create_connection("ws://echo.websocket.org/")
print("Sending 'Hello, World'...")
ws.send("Hello, World")
print("Sent")
print("Receiving...")
result = ws.recv()
print("Received '%s'" % result)
ws.close()

关于websocket的介绍就到这儿了。

以上就是用Python进行websocket接口测试的详细内容,更多关于python 接口测试的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
高性能web服务器框架Tornado简单实现restful接口及开发实例
Jul 16 Python
详解python之简单主机批量管理工具
Jan 27 Python
简单谈谈Python中的json与pickle
Jul 19 Python
tensorflow学习笔记之mnist的卷积神经网络实例
Apr 15 Python
Python绘制正余弦函数图像的方法
Aug 28 Python
Python3批量生成带logo的二维码方法
Jun 24 Python
django2笔记之路由path语法的实现
Jul 17 Python
python jenkins 打包构建代码的示例代码
Nov 29 Python
使用Python实现分别输出每个数组
Dec 06 Python
Python使用Tkinter实现转盘抽奖器的步骤详解
Jan 06 Python
jupyter notebook 的工作空间设置操作
Apr 20 Python
Python闭包与装饰器原理及实例解析
Apr 30 Python
python如何控制进程或者线程的个数
Oct 16 #Python
python利用 keyboard 库记录键盘事件
Oct 16 #Python
python实现快速文件格式批量转换的方法
Oct 16 #Python
Python通过getattr函数获取对象的属性值
Oct 16 #Python
pandas处理csv文件的方法步骤
Oct 16 #Python
python爬取”顶点小说网“《纯阳剑尊》的示例代码
Oct 16 #Python
Python使用内置函数setattr设置对象的属性值
Oct 16 #Python
You might like
《PHP边学边教》(04.编写简易的通讯录――视频教程1)
2006/12/13 PHP
php获取mysql字段名称和其它信息的例子
2014/04/14 PHP
Destoon模板制作简明教程
2014/06/20 PHP
[原创]PHP正则匹配中英文、数字及下划线的方法【用户名验证】
2017/08/01 PHP
Js callBack 返回前一页的js方法
2008/11/30 Javascript
JavaScript OOP类与继承
2009/11/15 Javascript
淘宝搜索框效果实现分析
2011/03/05 Javascript
用js设置下拉框为只读的小技巧
2014/04/10 Javascript
45个JavaScript编程注意事项、技巧大全
2015/02/11 Javascript
javascript结合CSS实现苹果开关按钮特效
2015/04/07 Javascript
jquery京东商城双11焦点图多图广告特效代码分享
2015/09/06 Javascript
jQuery使用Selectator插件实现多选下拉列表过滤框(附源码下载)
2016/04/08 Javascript
jquery中绑定事件的异同
2017/02/28 Javascript
利用jQuery+localStorage实现一个简易的计时器示例代码
2017/12/25 jQuery
详解React之key的使用和实践
2018/09/29 Javascript
从零开始在NPM上发布一个Vue组件的方法步骤
2018/12/20 Javascript
vue路由--网站导航功能详解
2019/03/29 Javascript
VueJS实现用户管理系统
2020/05/29 Javascript
JavaScript 中的执行上下文和执行栈实例讲解
2021/02/25 Javascript
python实现斐波那契数列的方法示例
2017/01/12 Python
python中MethodType方法介绍与使用示例
2017/08/03 Python
python selenium 对浏览器标签页进行关闭和切换的方法
2018/05/21 Python
python批量识别图片指定区域文字内容
2019/04/30 Python
使用OpenCV获取图片连通域数量,并用不同颜色标记函
2020/06/04 Python
python代码中怎么换行
2020/06/17 Python
python 服务器运行代码报错ModuleNotFoundError的解决办法
2020/09/16 Python
利用CSS3实现自定义滚动条代码分享
2016/08/18 HTML / CSS
KEETSA环保床垫:更好的睡眠,更好的生活!
2016/11/24 全球购物
会计系中文个人求职信
2013/12/24 职场文书
法律七进实施方案
2014/03/15 职场文书
四下基层实施方案
2014/03/28 职场文书
2014年社区居委会主任重阳节讲话稿
2014/09/25 职场文书
优秀共产党员推荐材料
2014/12/18 职场文书
小学生作文批改评语
2014/12/25 职场文书
文艺演出主持词
2015/07/01 职场文书
Centos环境下Postgresql 安装配置及环境变量配置技巧
2021/05/18 PostgreSQL