首页 > 编程语言 >用Python进行websocket接口测试

用Python进行websocket接口测试

时间:2023-12-21 12:04:04浏览次数:44  
标签:websocket Python 接口 ws error print message def


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

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

pip install websocket-client

用Python进行websocket接口测试_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,接口,ws,error,print,message,def
From: https://blog.51cto.com/u_15333581/8920915

相关文章

  • Postman测试接口各种类型传值的实现
    一.GET传参二.POST传参1.application/x-www-form-urlencoded格式 2.application/json格式2.1Map或实体类型2.2.List传值  3.multipart/form-data上传文件三.Header 四.下载文件......
  • Python接口自动化浅析logging封装及实战操作
    一、yaml配置文件将日志中的常用配置,比如日志器名称、日志器等级及格式化放在配置文件中,在配置文件config.yaml中添加:logger:name:ITesterlevel:DEBUGformat:'%(filename)s-%(lineno)d-%(asctime)s-%(levelname)s-%(message)s'封装logging类,读取yaml中的日志配置。二、读取y......
  • Python接口自动化之文件上传/下载接口详解
    〇、前言文件上传/下载接口与普通接口类似,但是有细微的区别。如果需要发送文件到服务器,例如:上传文档、图片、视频等,就需要发送二进制数据,上传文件一般使用的都是Content-Type:multipart/form-data数据类型,可以发送文件,也可以发送相关的消息体数据。反之,文件下载就是将二进制格式......
  • python+excel接口自动化获取token并作为请求参数进行传参操作
    1、登录接口登录后返回对应token封装:importjsonimportrequestsfromutil.operation_jsonimportOperationJsonfrombase.runmethodimportRunMethodclassOperationHeader:def__init__(self,response):self.response=json.loads(response)defget_response_token(......
  • Python中Selenium模块的使用详解
    Selenium的介绍、配置和调用Selenium(浏览器自动化测试框架) 是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。支持的浏览器包括IE(7,8,9,10,11),Firefox,Safari,GoogleChrome,Opera等。这个工具的主要功能包括:测试浏览器的兼容性——......
  • Pytest+Request+Allure+Jenkins实现接口自动化
    利用Pytest+Request+Allure+Jenkins实现接口自动化;实现一套脚本多套环境执行;利用参数化数据驱动模式,实现接口与测试数据分离使用logger定制实现自动化测试日志记录实现步骤:框架结构:1、接口自动化项目代码编写(先在window实现)1.1项目准备先在window安装响应的环境依赖安装python3.7(......
  • ERROR: Could not build wheels for opencv-python, which is required to install py
    目录系统环境问题描述问题解决问题二参考文章系统环境#macOS系统版本$sw_versProductName:MacOSXProductVersion:10.14.4BuildVersion:18E2035#Python版本$python--versionPython3.9.13问题描述安装opencv-python报错,安装失败#安装opencv-python的命令......
  • python初识
    一、何为编程语言编程:用代码指挥计算机做事,编写一个特定的程序程序:根据据一堆指令,告诉计算机该做什么代码:写给计算机看的/处理的一条命令,写代码就是给计算机下命令语言:分自然语言和编程语言。自然语言,本质上是人与人之间的交流;编程语言,本质上是计算机跟人的交流。计算机和人都......
  • 【算法】python版A-Star(A星)寻路
    importpygameimportmathfromqueueimportPriorityQueue#初始化屏幕WIDTH=800WIN=pygame.display.set_mode((WIDTH,WIDTH))pygame.display.set_caption("A*PathFindingAlgorithm")#定义颜色RED=(255,0,0)GREEN=(0,255,0)BLUE=(0,255,0)......
  • Python异步编程之yield from
    yieldfrom简介yieldfrom是Python3.3后新加的语言结构,可用于简化yield表达式的使用。yieldfrom简单示例:>>>defgen():...yieldfromrange(10)...>>>g=gen()>>>next(g)0>>>next(g)1>>>yieldfrom用于获取生成器中的值,是对yield使用的一种......