websocket协议和http协议的封装

封装Common类,将 WebSocket 的协议封装到你的框架后,你就拥有了一个既包含 HTTP 协议又包含 WebSocket 协议的接口测试框架了。


#!/usr/bin/env python
# -*- coding: utf-8 -*-
# python代码中引入requests库,引入后才可以在你的代码中使用对应的类以及成员函数
import requests
from websocket import create_connection


# 定义一个common的类,它的父类是object
class Common(object):
  # common的构造函数
  def __init__(self,url_root,api_type):
    '''
    :param api_type:接口类似当前支持http、ws,http就是HTTP协议,ws是WebSocket协议  
    :param url_root: 被测系统的根路由   
    '''    
    if api_type=='ws':
      self.ws = create_connection(url_root)
    elif api_type=='http':
      self.ws='null'
      self.url_root = url_root


  # ws协议的消息发送
  
  def send(self,params):
    '''
    :param params: websocket接口的参数
    
    :return: 访问接口的返回值
    ''' 
    self.ws.send(params)
    res = self.ws.recv()
    return res


  # common类的析构函数,清理没有用的资源
  
  def __del__(self):
    '''
    :return:
    '''
    if self.ws!='null":
       self.ws.close()
  def get(self, uri, params=None):
    '''
    封装你自己的get请求,uri是访问路由,params是get请求的参数,如果没有默认为空 
    :param uri: 访问路由 
    :param params: 传递参数,string类型,默认为None 
    :return: 此次访问的response
    '''
    # 拼凑访问地址
    if params is not None:
      url = self.url_root + uri + params
    else:    
      url = self.url_root + uri
    # 通过get请求访问对应地址
    res = requests.get(url)
    # 返回request的Response结果,类型为requests的Response类型
    return res
  def post(self, uri, params=None):
    '''
    封装你自己的post方法,uri是访问路由,params是post请求需要传递的参数,如果没有参数这里为空
    :param uri: 访问路由
    :param params: 传递参数,string类型,默认为None
    :return: 此次访问的response
    '''
    # 拼凑访问地址
    url = self.url_root + uri
    if params is not None:
       # 如果有参数,那么通过post方式访问对应的url,并将参数赋值给requests.post默认参数data
      # 返回request的Response结果,类型为requests的Response类型
      res = requests.post(url, data=params)
    else:
      # 如果无参数,访问方式如下
      # 返回request的Response结果,类型为requests的Response类型
      res = requests.post(url)    
    return res


  def put(self,uri,params=None):
    '''
    封装你自己的put方法,uri是访问路由,params是put请求需要传递的参数,如果没有参数这里为空
    :param uri: 访问路由
    :param params: 传递参数,string类型,默认为None
    :return: 此次访问的response
    '''
    url = self.url_root+uri
    if params is not None:
      # 如果有参数,那么通过put方式访问对应的url,并将参数赋值给requests.put默认参数data
      # 返回request的Response结果,类型为requests的Response类型
      res = requests.put(url, data=params)
    else:
      # 如果无参数,访问方式如下
      # 返回request的Response结果,类型为requests的Response类型
      res = requests.put(url)
    return res


  def delete(self,uri,params=None):
    '''
    封装你自己的delete方法,uri是访问路由,params是delete请求需要传递的参数,如果没有参数这里为空
    :param uri: 访问路由
    :param params: 传递参数,string类型,默认为None
    :return: 此次访问的response
    '''
    url = self.url_root + uri
    if params is not None:
      # 如果有参数,那么通过put方式访问对应的url,并将参数赋值给requests.put默认参数data
      # 返回request的Response结果,类型为requests的Response类型
      res = requests.delete(url, data=params)
    else:
      # 如果无参数,访问方式如下
      # 返回request的Response结果,类型为requests的Response类型
      res = requests.put(url)
    return res

Common 类将上面那个流水账一样的脚本进行改造后代码如下

from common import Common
# 建立和WebSocket接口的链接
con = Common('ws://echo.websocket.org','ws')
# 获取返回结果
result = con.send('Hello, World...')
#打印日志
print(result)
#释放WebSocket的长连接
del con
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值