zoukankan      html  css  js  c++  java
  • Python_01_适配器模式实现多协议接口测试框架

    
    # 适配器模式
    from abc import ABCMeta, abstractmethod
    
    
    class HTTPRequest(object):
        def __init__(self, url, body):
            self.url = url
            self.body = body
    
        def get(self):
            print(f"http get->{self.url}-{self.body}")
    
        def post(self):
            print(f"http post->{self.url}-{self.body}")
    
    
    class WebSocket(object):
        def __init__(self, url, msg):
            self.url = url
            self.msg = msg
    
        def request(self):
            print(f"websocket-{self.url}-{self.msg}")
    
    
    class Request(object):
        def __init__(self, method, url, body, proto):
            self.method = method
            self.url = url
            self.body = body
            self.proto = proto
    
    
    class RequestAdapter(metaclass=ABCMeta):
        @abstractmethod
        def send(self, request: Request):
            pass
    
    
    class WebSocketAdapter(RequestAdapter):
        def send(self, request: Request):
            websocket = WebSocket(url=request.url, msg=request.body)
            websocket.request()
    
    
    class HttpAdapter(RequestAdapter):
        def send(self, request: Request):
            http = HTTPRequest(url=request.url, body=request.body)
            if request.method == "get":
                http.get()
            elif request.method == "post":
                http.post()
    
    
    class ApiRequest(object):
        adapter: RequestAdapter
    
        def __init__(self, method="", url="", body="", proto="http"):
            self.request = Request(
                method,
                url,
                body,
                proto
            )
    
        def send(self):
            if self.request.proto == "websocket":
                adapter = WebSocketAdapter()
            elif self.request.proto == "http":
                adapter = HttpAdapter()
            else:
                raise ValueError(self.request.proto)
            adapter.send(self.request)
    
    
    if __name__ == '__main__':
        # http和websocket两套适配器 同一套接口测试不同协议的接口服务
        ApiRequest(proto="websocket").send()
        ApiRequest(proto="http", method="get").send()
    
    
  • 相关阅读:
    vue中路由跳转传递参数
    父组件向子孙组件传递数据provide/inject
    微信、QQ等内置浏览器定位失败
    Java ArrayList类
    java 生成 [1, n] 之间的随机数
    Java 构造方法
    Java this关键字
    Java private关键字及作用
    Java 随笔
    Java 内存划分
  • 原文地址:https://www.cnblogs.com/carp-li/p/15152088.html
Copyright © 2011-2022 走看看