用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 相关文章推荐
Python实现以时间换空间的缓存替换算法
Feb 19 Python
Python用UUID库生成唯一ID的方法示例
Dec 15 Python
Python编程之序列操作实例详解
Jul 22 Python
Python针对给定字符串求解所有子序列是否为回文序列的方法
Apr 21 Python
详解如何用django实现redirect的几种方法总结
Nov 22 Python
python 三元运算符使用解析
Sep 16 Python
Python list运算操作代码实例解析
Jan 20 Python
tensorflow 模型权重导出实例
Jan 24 Python
Python3开发实例之非关系型图数据库Neo4j安装方法及Python3连接操作Neo4j方法实例
Mar 18 Python
python实现图像全景拼接
Mar 27 Python
使用python批量转换文件编码为UTF-8的实现
Apr 03 Python
Pytorch 使用opnecv读入图像由HWC转为BCHW格式方式
Jun 02 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
Windows下利用Gvim写PHP产生中文乱码问题解决方法
2011/04/20 PHP
php在window iis的莫名问题的测试方法
2013/05/14 PHP
php全局变量和类配合使用深刻理解
2013/06/05 PHP
javascript indexOf函数使用说明
2008/07/03 Javascript
超越Jquery_01_isPlainObject分析与重构
2010/10/20 Javascript
jQuery学习基础知识小结
2010/11/25 Javascript
jquery对元素拖动排序示例
2014/01/16 Javascript
angularjs中的e2e测试实例
2014/12/06 Javascript
jQuery常用知识点总结以及平时封装常用函数
2016/02/23 Javascript
jQuery文字提示与图片提示效果实现方法
2016/07/04 Javascript
Wireshark基本介绍和学习TCP三次握手
2016/08/15 Javascript
Jquery遍历select option和添加移除option的实现方法
2016/08/26 Javascript
Javascript之面向对象--封装
2016/12/02 Javascript
前端构建工具之gulp的配置与搭建详解
2017/06/12 Javascript
利用jQuery异步上传文件的插件用法详解
2017/07/19 jQuery
Vue项目引进ElementUI组件的方法
2018/11/11 Javascript
python局域网ip扫描示例分享
2014/04/03 Python
Python语言描述随机梯度下降法
2018/01/04 Python
python2.7实现爬虫网页数据
2018/05/25 Python
python版本单链表实现代码
2018/09/28 Python
解决Django连接db遇到的问题
2019/08/29 Python
Python 时间戳之获取整点凌晨时间戳的操作方法
2020/01/28 Python
HTML5 progress和meter控件_动力节点Java学院整理
2017/07/06 HTML / CSS
Html5新标签datalist实现输入框与后台数据库数据的动态匹配
2017/05/18 HTML / CSS
Eyeko美国:屡获殊荣的睫毛膏、眼线笔和眉妆
2018/07/05 全球购物
Kipling澳洲官网:购买凯浦林包包
2020/12/17 全球购物
JSF面试题:如何管量web层中的Bean,用什么标签。如何通过jsp页面与Bean绑定在一起进行处理?
2012/10/05 面试题
金智子午JAVA面试题
2015/09/04 面试题
车队司机个人自我鉴定
2014/04/17 职场文书
小学师德师风演讲稿
2014/09/02 职场文书
2014银行领导班子群众路线对照检查材料思想汇报
2014/09/17 职场文书
弘扬焦裕禄精神践行三严三实心得体会
2014/10/13 职场文书
中学生国庆节演讲稿2015
2015/07/30 职场文书
北京大学中文系教授推荐的10本小说
2019/08/08 职场文书
亲情作文之母爱
2019/09/25 职场文书
一小时学会TensorFlow2之基本操作2实例代码
2021/09/04 Python