用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 相关文章推荐
Python3.2中的字符串函数学习总结
Apr 23 Python
Python中函数的参数定义和可变参数用法实例分析
Jun 04 Python
python自动zip压缩目录的方法
Jun 28 Python
python脚本实现xls(xlsx)转成csv
Apr 10 Python
Python读取MRI并显示为灰度图像实例代码
Jan 03 Python
python使用tkinter实现简单计算器
Jan 30 Python
python统计多维数组的行数和列数实例
Jun 23 Python
pycharm使用matplotlib.pyplot不显示图形的解决方法
Oct 28 Python
Python判断一个文件夹内哪些文件是图片的实例
Dec 07 Python
如何通过python实现全排列
Feb 11 Python
python利用线程实现多任务
Sep 18 Python
Python OpenCV 彩色与灰度图像的转换实现
Jun 05 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的超级变量$_GET获取HTML表单(Form) 数据
2011/05/07 PHP
学习php设计模式 php实现命令模式(command)
2015/12/08 PHP
php基于自定义函数记录log日志方法
2017/07/21 PHP
thinkPHP5.0框架验证码调用及点击图片刷新简单实现方法
2018/09/07 PHP
laravel 框架实现无限级分类的方法示例
2019/10/31 PHP
JS 控件事件小结
2012/10/31 Javascript
Javascript引用指针使用介绍
2012/11/07 Javascript
jQuery模拟点击A标记示例参考
2014/04/17 Javascript
javascript编程实现栈的方法详解【经典数据结构】
2017/04/11 Javascript
jQuery鼠标悬停内容动画切换效果
2017/04/27 jQuery
React styled-components设置组件属性的方法
2018/08/07 Javascript
基于layui框架响应式布局的一些使用详解
2019/09/16 Javascript
Javascript如何递归遍历本地文件夹
2020/08/06 Javascript
python使用scrapy解析js示例
2014/01/23 Python
举例详解Python中的split()函数的使用方法
2015/04/07 Python
python实现颜色空间转换程序(Tkinter)
2015/12/31 Python
关于Django外键赋值问题详解
2017/08/13 Python
Python基于递归算法求最小公倍数和最大公约数示例
2018/07/27 Python
pandas 按日期范围筛选数据的实现
2021/02/20 Python
css3 自定义字体font-face使用介绍
2014/05/14 HTML / CSS
canvas画布实现手写签名效果的示例代码
2019/04/23 HTML / CSS
Nike香港官网:Nike HK
2019/03/23 全球购物
印度在线购物网站:Paytmmall
2019/07/24 全球购物
牵手50香港:专为黄金岁月的单身人士而设的交友网站
2020/08/14 全球购物
应届生求职信写作技巧
2013/10/24 职场文书
客服主管岗位职责
2013/12/13 职场文书
淘宝网店营销策划书
2014/01/11 职场文书
设计顾问服务计划书
2014/05/04 职场文书
小学生运动会通讯稿
2014/09/23 职场文书
2014党员整改措施思想汇报
2014/10/07 职场文书
校园游戏活动新闻稿
2014/10/15 职场文书
2015年教师自我评价范文
2015/03/04 职场文书
勤俭节约倡议书范文
2015/04/29 职场文书
学雷锋活动简报
2015/07/20 职场文书
中国文明网2015年“向国旗敬礼”活动网上签名寄语
2015/09/24 职场文书
Python标准库pathlib操作目录和文件
2021/11/20 Python