zoukankan      html  css  js  c++  java
  • 接口测试-处理经过加密的返回数据的方法

    疑问:若接口返回的数据经过加密或格式发生改变,如何处理

    进行一层封装,显示转换

    • 将获得的数据进一步判断数据格式,根据条件进行转换。如以下demo
    class TestEncode:
       def test_api(self):
           req = ApiRequest()
           req_data = {
               "schema": "http",
               "encoding": "base64",  # 这个字段根据数据格式而定
               "method": "get",
               "url": "http://1.1.1.1/topics.txt",
               "headers": None
           }
           r = req.send(req_data)  # 将数据发送到已封装的函数,返回一个json格式的数据
           assert len(r["topics"]) == 2
    
    
    class ApiRequest:
       """对数据进行相应的封装,进行格式转换"""
       def send(self, data: dict):
           if data["schema"] == "http":
               res = requests.request(data["method"], data["url"], headers=data["headers"])
               if data["encoding"] == "base64":  # 判断数据的编码格式
                   # 使用base64进行解密,将解密后的数据转换成json结构体的数据
                   return json.loads(base64.b64decode(res.content))
               else:
                   return json.loads(res.content)  # 若数据格式不是base64,将原生内容进行json格式化
           elif data["schema"] == "dubbo":
               pass
           elif data["schema"] == "websocket":
               pass
           else:
               pass
    
    • 修改requests 加入hook,隐式转换数据。修改底层库的方法将数据转换
    • 若是以base64进行加密,则可以使用base64.b64decode(keyword)函数进行解密后,在转换为json格式或其他格式。
    • 若是不知道加密的算法,可与开发商讨,给定一个接口,向接口请求数据,返回所要的具有相应格式的数据
    • 加解密不要体现在测试用例中

    加密方法

    • 请求加密:摘要加密 把原文或者原始请求中的部分字段做摘要算法的加密,把加密后的结果也放到原始请求中发送。
    • 响应加密:返回的整个响应或者响应中的部分字段被加密,我们需要找到解密办法,还有一个名字叫摘要算法。

    解密方式

    • 自己解决通用解密算法
    • 需要研发提供加解密的lib
    • 需要加密方提供远程解析服务,这样算法仍然是保密的。

    加密与签名的区别

    • 加密通常代表是对称加密,这种加密是可以解密的。比如base64,主要用于的数据传输。
    • 签名通常代表是非对称加密,这种加密不可逆不可解密。比如rsa、md5。通常用于认证内容未被篡改。
  • 相关阅读:
    不要跟亲戚谈生意
    docker学习连接
    docker之docker-compose——容器管理
    docker之镜像管理——仓库使用
    docker之入门——安装及基本命令
    orcle数据库新建用户
    hibernate select 查询方式总结
    Hibernate 主配置文件详解
    ActionContext和ServletActionContext小结(struts2)
    理解Java常量池
  • 原文地址:https://www.cnblogs.com/chenri/p/12683458.html
Copyright © 2011-2022 走看看