用Python进行websocket接口测试

 更新时间:2020年10月16日 15:05:55   作者:我被狗咬了  
这篇文章主要介绍了用Python进行websocket接口测试,帮助大家更好的理解和使用python,感兴趣的朋友可以了解下

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

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

pip install websocket-client

安装完之后,我们就开始我们的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 接口测试的资料请关注脚本之家其它相关文章!

相关文章

  • Mac 使用python3的matplot画图不显示的解决

    Mac 使用python3的matplot画图不显示的解决

    今天小编就为大家分享一篇Mac 使用python3的matplot画图不显示的解决,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-11-11
  • Python人工智能之路 jieba gensim 最好别分家之最简单的相似度实现

    Python人工智能之路 jieba gensim 最好别分家之最简单的相似度实现

    这篇文章主要介绍了Python人工智能之路 jieba gensim 最好别分家之最简单的相似度实现 ,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-08-08
  • Python闭包和装饰器用法实例详解

    Python闭包和装饰器用法实例详解

    这篇文章主要介绍了Python闭包和装饰器用法,结合实例形式详细分析了Python闭包和装饰器的相关概念、原理、使用技巧与相关操作注意事项,需要的朋友可以参考下
    2019-05-05
  • 关于Pandas count()与values_count()的用法及区别

    关于Pandas count()与values_count()的用法及区别

    这篇文章主要介绍了关于Pandas count()与values_count()的用法及区别,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-05-05
  • 小白入门篇使用Python搭建点击率预估模型

    小白入门篇使用Python搭建点击率预估模型

    本文将从零开始,仅仅利用基础的numpy库,使用Python实现一个最简单的神经网络(或者说是简易的LR,因为LR就是一个单层的神经网络),解决一个点击率预估的问题。感兴趣的朋友跟随小白一起看看吧
    2018-10-10
  • Python threading Local()函数用法案例详解

    Python threading Local()函数用法案例详解

    这篇文章主要介绍了Python threading Local()函数用法案例详解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-09-09
  • python数据类型强制转换实例详解

    python数据类型强制转换实例详解

    这篇文章主要介绍了python数据类型强制转换实例详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-06-06
  • 详解PyTorch nn.Embedding() 嵌入

    详解PyTorch nn.Embedding() 嵌入

    在自然语言处理(NLP)中,将文本序列转化为数字序列(tokenid)后,为了使模型能更好地理解这些数字背后的含义,引入了嵌入层(Embedding)通过简单的示例,可以看出Embedding的获取过程及其在理解语言中的关键作用
    2024-11-11
  • python开发一款翻译工具

    python开发一款翻译工具

    这篇文章主要介绍了如何用python开发一款翻译工具,帮助大家更好的理解和学习python,感兴趣的朋友可以了解下
    2020-10-10
  • python爬虫实战之最简单的网页爬虫教程

    python爬虫实战之最简单的网页爬虫教程

    在我们日常上网浏览网页的时候,经常会看到一些好看的图片,我们就希望把这些图片保存下载,或者用户用来做桌面壁纸,或者用来做设计的素材。下面这篇文章就来给大家介绍了关于利用python实现最简单的网页爬虫的相关资料,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-08-08

最新评论