用Python进行websocket接口测试

作者:我被狗咬了 时间:2022-03-02 09:44:22 

我们在做接口测试时,除了常见的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的介绍就到这儿了。

来源:https://cloud.tencent.com/developer/article/1510529

标签:python,接口测试,websocket
0
投稿

猜你喜欢

  • js实现根据文件url批量压缩下载成zip包

    2024-04-22 22:15:17
  • Python Socket编程详细介绍

    2021-01-02 02:56:21
  • vue圆环百分比进度条组件功能的实现

    2024-06-07 15:19:57
  • 使用cmd命令行窗口操作SqlServer的方法

    2012-07-21 14:24:06
  • JavaScript如何获取一个元素的样式信息

    2023-08-28 12:16:17
  • Python使用Selenium模拟浏览器自动操作功能

    2021-01-19 07:55:33
  • 生成二维码方法汇总

    2024-04-27 15:23:32
  • Python使用Web框架Flask开发项目

    2021-07-08 20:08:56
  • Pycharm无法打开双击没反应的问题及解决方案

    2021-09-06 07:34:30
  • python监控网站运行异常并发送邮件的方法

    2021-07-28 06:27:34
  • Centos7下源码安装Python3 及shell 脚本自动安装Python3的教程

    2023-01-11 13:45:04
  • Bootstrap-table使用footerFormatter做统计列功能

    2024-04-29 13:13:01
  • Python语法学习之正则表达式的量词汇总

    2023-07-20 03:08:59
  • MySQL 去除重复数据实例详解

    2024-01-24 13:21:53
  • WEB2.0网页制作标准教程(10)自适应高度

    2008-02-19 19:21:00
  • PHP json_encode中文乱码解决方法

    2023-07-12 20:20:14
  • 使用面向对象的技术创建高级JavaScript Web 应用程序

    2008-11-03 13:00:00
  • python manage.py runserver流程解析

    2022-03-11 13:12:10
  • ASP 正则表达式常用的几种方法(execute、test、replace)

    2010-03-02 20:23:00
  • 打包发布Python模块的方法详解

    2021-04-03 06:10:56
  • asp之家 网络编程 m.aspxhome.com