一、dubbo协议接口测试-TODO
1、 为什么使用 dubbo
- 简介:dubbo是阿里基于java的开源框架,是为了适应阿里的服务治理而设计的一套框架,该框架的主要目的是SOA(服务治理);
2、dobbo应用场景
3、dubbo架构
4、 dubbo 支持协议
- dubbo3 triple
- dubbo2 协议
- rest 协议
- http 协议
- hessian 协议
- redis 协议
- thrift 协议
- gRPC 协议
- memcached 协议
- rmi 协议
- webservice 协议
二、thrift协议接口测试-TODO
三、pb协议接口测试-TODO
四、socket协议接口测试
1、简介
- 在计算机网络中,Socket(套接字)是一种通信机制。
- Socket是对TCP/IP协议的封装。
- HTTP协议是应用层协议,更标准,方便。
- Socket协议更底层、更通用。
2、应用场景
- 直接应用:特定的物联网应用中,需要与底层硬件或其他系统进行直接的、定制化的通信。
- 间接应用:大部分的协议都是基于 Socket 协议进行抽象优化,比如HTTP协议。
3、socket接口测试
-
演示环境:
- Host:socket.hogwarts.ceshiren.com。
- Port:30001。
-
实现思路。
- 1.创建Socket实例对象。
-
- 创建连接。
-
- 发送消息。
-
- 接受消息。
-
- 关闭连接。
-
- 返回响应,完成断言。
-
提示:socket发送和返回的都是二进制数据;
socketreques.py
import socket
class SocketRequest:
def send_socket(self,send_data: str):
# *1.创建Socket实例对象。。AF_INET指定使用IPv4协议,SOCK_STREAM指定使用面向流的TCP协议
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# *2.创建连接。
s.connect(("socket.hogwarts.ceshiren.com", 30001))
# 将发送数据转换成二进制
byte_data = send_data.encode('utf8')
# *3.发送消息。--socket发送和返回的都是二进制数据
s.send(byte_data)
# *4. 接受消息。--参数为一次最多接收的字节数,如果一次接收不完,使用while循环反复接收
result = s.recv(2048)
# 5. 关闭连接。
s.close()
# 接收的数据为二进制数据,返回的时候转码为str
return result.decode('utf8')
test_socket.py
from testsocket.socketrequest import SocketRequest
class TestSocket:
def setup_method(self):
# 创建请求对象
self.socket_req = SocketRequest()
def test_socket_01(self):
result = self.socket_req.send_socket("你好,Hogwarts!")
# 6、返回响应,完成断言。--socket发送和返回的都是同一个数据
assert result == "你好,Hogwarts!"
五、websocket协议接口测试
1、什么是websocket
-
WebSocket是一种通信协议,它允许在Web浏览器和服务器之间建立持久的、双向的通信连接。相比传统的HTTP请求-响应模式,WebSocket可以实现实时交互和即时更新,非常适合需要实时数据传输的应用。
-
WebSocket的工作原理如下:
-
- 客户端发起WebSocket连接请求,请求中包含特殊的协议头。–请求握手。
-
- 服务器收到请求后,如果支持WebSocket协议,则返回一个特殊的响应头,表示连接已建立。–同意握手,建立连接。
-
- 连接建立后,客户端和服务器之间可以通过这个持久连接进行双向通信。
-
- 客户端和服务器可以通过发送消息进行通信,消息可以是文本、二进制数据或其他形式。
-
- 服务器可以主动向客户端发送消息,也可以在接收到客户端的消息后进行响应。
-
-
WebSocket的特点包括:
- 实时性:WebSocket连接可以在客户端和服务器之间实时地传输数据,避免了HTTP请求-响应的延迟。
- 双向通信:WebSocket允许客户端和服务器之间进行双向的通信,可以同时发送和接收数据。
- 较少的数据传输量:WebSocket协议使用更少的数据传输量,因为连接的建立和维护只需要少量的数据交换。
- 更好的性能:由于WebSocket连接是持久的,不需要频繁地建立和关闭连接,可以减少服务器的负载。
- 协议标识符是 ws(如果加密,则为 wss),服务器网址就是 URL。
-
总结起来,WebSocket是一种能够实现实时、双向通信的协议,它在Web应用中提供了更好的性能和用户体验。
2、websocket协议-Charles抓包
-
步骤:
- 1、浏览器添加代理配置,代理ip和端口是Charles设置的ip和端口;
- 2、访问网站抓取ws协议的接口并查看websocket数据包;
抓包演练地址: websocket在线测试 (websocket-test.com)
1、设置浏览器代理
2、访问网站进行抓包
3、websocket接口测试–websocket-client库
- 步骤:
- 1、安装第三方库:
pip install websocket-client
; - 2、创建连接;
- 3、发送信息;
- 4、获取响应值;
- 5、关闭连接;
- 6、断言响应信息;
- 1、安装第三方库:
test_websockey.py
from websocket import create_connection
class WebsocketProtocol:
@classmethod
def send_websocket(self,url,content: str):
# 创建连接
ws = create_connection(url)
# 获取服务器返回的消息
result = ws.recv()
print(f"获取服务器返回的消息:{result}")
# 客户端发送消息
ws.send(content)
# 获取服务器返回的消息
result_send = ws.recv()
# 关闭连接
ws.close()
# 返回客户端接收的消息
return result_send
if __name__ == '__main__':
url = "ws://tech01.ceba.ceshiren.com:10000/websocket"
content = "你好,Hogwarts!"
result = WebsocketProtocol.send_websocket(url,content)
print(f"result={result}")