用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获取beautifulphoto随机某图片代码实例
Dec 18 Python
python实现数通设备tftp备份配置文件示例
Apr 02 Python
Python爬虫框架Scrapy常用命令总结
Jul 26 Python
Python django使用多进程连接mysql错误的解决方法
Oct 08 Python
python 列表输出重复值以及对应的角标方法
Jun 11 Python
树莓派用python中的OpenCV输出USB摄像头画面
Jun 22 Python
详解Python time库的使用
Oct 10 Python
重写django的model下的objects模型管理器方式
May 15 Python
keras打印loss对权重的导数方式
Jun 10 Python
Python 实现图片转字符画的示例(静态图片,gif皆可)
Nov 05 Python
python中pandas.read_csv()函数的深入讲解
Mar 29 Python
Python使用pandas导入csv文件内容的示例代码
Dec 24 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
Classes and Objects in PHP5-面向对象编程 [1]
2006/10/09 PHP
PHP中include()与require()的区别说明
2010/03/10 PHP
适用于php-5.2 的 php.ini 中文版[金步国翻译]
2011/04/17 PHP
php商品对比功能代码分享
2015/09/24 PHP
关于PHP中interface的用处详解
2020/07/26 PHP
Apache+PHP+MySQL搭建PHP开发环境图文教程
2020/08/06 PHP
使用Apache的rewrite
2021/03/09 Servers
JavaScript继承方式实例
2010/10/29 Javascript
javascript检测页面是否缩放的小例子
2013/05/16 Javascript
jQuery写fadeTo示例代码
2014/02/21 Javascript
js判断是否按下了Shift键的方法
2015/01/27 Javascript
基于Layer+jQuery的自定义弹框
2020/05/26 Javascript
jQuery中的siblings()是什么意思(推荐)
2016/12/29 Javascript
bootstrap精简教程_动力节点Java学院整理
2017/07/14 Javascript
Vue项目中最新用到的一些实用小技巧
2018/11/06 Javascript
Vuerouter的beforeEach与afterEach钩子函数的区别
2018/12/26 Javascript
jquery获取file表单选择文件的路径、名字、大小、类型
2019/01/18 jQuery
推荐几个不错的console调试技巧实现
2019/12/20 Javascript
[42:25]EG vs Spirit Supermajor 败者组 BO3 第二场 6.4
2018/06/05 DOTA
Python 深入理解yield
2008/09/06 Python
用pywin32实现windows模拟鼠标及键盘动作
2014/04/22 Python
python数据结构之二叉树的统计与转换实例
2014/04/29 Python
浅谈python中get pass用法
2019/03/19 Python
详解Python读取yaml文件多层菜单
2019/03/23 Python
Python 实现黑客帝国中的字符雨的示例代码
2020/02/20 Python
使用Pycharm(Python工具)新建项目及创建Python文件的教程
2020/04/26 Python
python 发送邮件的示例代码(Python2/3都可以直接使用)
2020/12/03 Python
深入浅析css3 border-image边框图像详解
2015/11/24 HTML / CSS
Html5饼图绘制实现统计图的方法
2020/08/05 HTML / CSS
最耐用行李箱,一箱永流传:Briggs & Riley(全球终身保修)
2017/12/07 全球购物
Servlet如何得到客户端机器的信息
2014/10/17 面试题
金融管理毕业生求职信
2014/03/03 职场文书
2014年无财产无子女离婚协议书范本
2014/10/09 职场文书
幼儿园六一主持词开场白
2015/05/28 职场文书
公司环境卫生管理制度
2015/08/05 职场文书
解析探秘fescar分布式事务实现原理
2022/02/28 Java/Android