当前位置:   article > 正文

Python进行websocket接口测试_python websocket.websocket()

python websocket.websocket()

Python进行websocket接口测试

Nikon937

Python进行websocket接口测试 - 简书

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

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

pip install websocket-client

安装完之后,我们就开始我们的websocket之旅了。

我们先来看个简单的例子:

  1. import websocket
  2. ws = websocket.WebSocket()
  3. ws.connect("ws://example.com/websocket",
  4. http_proxy_host="proxy_host_name",
  5. http_proxy_port=3128)

这个例子就是创建一个websocket连接,这个模块支持通过http代理访问websocket。代理服务器允许使用connect方法连接到websocket端口。默认的squid设置是“只允许连接HTTPS端口”。

在websocket里,我们有常用的这几个方法:

on_message方法:

  1. def on_message(ws, message):
  2. print(message)

on_message是用来接受消息的,server发送的所有消息都可以用on_message这个方法来收取。
on_error方法:

  1. def on_error(ws, error):
  2. print(error)

这个方法是用来处理错误异常的,如果一旦socket的程序出现了通信的问题,就可以被这个方法捕捉到。

on_open方法:

  1. def on_open(ws):
  2. def run(*args):
  3. for i in range(30):
  4. # send the message, then wait
  5. # so thread doesn't exit and socket
  6. # isn't closed
  7. ws.send("Hello %d" % i)
  8. time.sleep(1)
  9. time.sleep(1)
  10. ws.close()
  11. print("Thread terminating...")
  12. Thread(target=run).start()

on_open方法是用来保持连接的,上面这样的一个例子,就是保持连接的一个过程,每隔一段时间就会来做一件事,他会在30s内一直发送hello。最后停止。

on_close方法:

  1. def on_close(ws):
  2. print("### closed ###")

onclose主要就是关闭socket连接的。

如何创建一个websocket应用:

ws = websocket.WebSocketApp("wss://echo.websocket.org")

括号里面就是你要连接的socket的地址,在WebSocketApp这个实例化的方法里面还可以有其他参数,这些参数就是我们刚刚介绍的这些方法。

  1. ws = websocket.WebSocketApp("ws://echo.websocket.org/",
  2. on_message=on_message,
  3. on_error=on_error,
  4. on_close=on_close)

指定了这些参数之后就可以直接进行调用了,例如:

ws.on_open = on_open

这样就是调用了on_open方法

如果我们想让我们的socket保持长连接,一直连接着,就可以使用run_forever方法:

ws.run_forever()

完整代码:

  1. import websocket
  2. from threading import Thread
  3. import time
  4. import sys
  5. def on_message(ws, message):
  6. print(message)
  7. def on_error(ws, error):
  8. print(error)
  9. def on_close(ws):
  10. print("### closed ###")
  11. def on_open(ws):
  12. def run(*args):
  13. for i in range(3):
  14. # send the message, then wait
  15. # so thread doesn't exit and socket
  16. # isn't closed
  17. ws.send("Hello %d" % i)
  18. time.sleep(1)
  19. time.sleep(1)
  20. ws.close()
  21. print("Thread terminating...")
  22. Thread(target=run).start()
  23. if __name__ == "__main__":
  24. websocket.enableTrace(True)
  25. host = "ws://echo.websocket.org/"
  26. ws = websocket.WebSocketApp(host,
  27. on_message=on_message,
  28. on_error=on_error,
  29. on_close=on_close)
  30. ws.on_open = on_open
  31. ws.run_forever()

如果想要通信一条短消息,并在完成后立即断开连接,我们可以使用短连接:

  1. from websocket import create_connection
  2. ws = create_connection("ws://echo.websocket.org/")
  3. print("Sending 'Hello, World'...")
  4. ws.send("Hello, World")
  5. print("Sent")
  6. print("Receiving...")
  7. result = ws.recv()
  8. print("Received '%s'" % result)
  9. ws.close()

1人点赞

Python

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/91458?site
推荐阅读
相关标签
  

闽ICP备14008679号