zoukankan      html  css  js  c++  java
  • 通过mock-server模拟响应与代理转发

    通过mock-server模拟响应与代理转发

    接口测试与界面测试过程中,会存在期望请求返回预期结果;非期望请求接口数据正常返回的场景。使用mock-server可以满足如下:

    1. 涉及数据查询接口,根据数据查询返回决定后续操作。避免修改数据库造成数据污染。
    2. 指定某些测试请求,可以对期望进行匹配,其余进行转发。将正常使用接口mock数据指定到某个case。
      记录一下测试过程中用到的mock-server,更多内容查看官网教程

    工具选用

    使用mock-server,主要用到了其中的3个功能:期望匹配、模拟响应、请求转发

    mock-server官网

    期望匹配与模拟响应
    期望匹配与模拟响应

    期望匹配与请求转发
    期望匹配与请求转发

    安装mock-server

    1. 启动方式

    mock-server的安装方式比较多,这里使用比较简单的jar包直接在服务器上启动(需要java环境)。

    java -jar <path to mockserver-jetty-jar-with-dependencies.jar> -serverPort <port> [-proxyRemotePort <port>] [-proxyRemoteHost <hostname>] [-logLevel <level>]
    
    # -serverPort <port> 代理监听端口
    # -proxyRemotePort <port> 不符合期望的转发到指定端口
    # -proxyRemoteHost <hostname> 不符合期望的转发到指定ip
    # -logLevel <level> 日志级别:TRACE, DEBUG, INFO, WARN, ERROR, OFF or Java Logger levels: FINEST, FINE, INFO, WARNING, SEVERE or OFF。可以不从命令行指定,使用-Djava.util.logging.config.file="日志配置文件"来指定java自带日志java.util.logging的配置文件指定日志

    2. 设置期望

    设置期望有两种方式

    1. 启动服务时使用 -Dmockserver.initializationJsonPath=“期望配置文件” 指定期望(期望文件可以放在zookeeper或者consul每次启动使用命令获取)。
    2. 服务启动后使用自带接口:/reset、/expectation管理。接口文档地址:mock-server接口文档

    期望配置文件参数

    1. 期望从上到下依次匹配
    2. 期望支持正则
    3. 请求body包含期望body参数即为匹配,详细参数见期望配置文档:期望配置文档
    4. 返回指定任意类型或者转发。
    [{
            "httpRequest": { # 期望1
                "path": "/stat/userScope/props", # 请求路径匹配,支持正则
                "body": { # 请求体匹配
                    "ai": "0a1b4118dd954ec3bcc69da5138bdb96",
                    "userScope": "cs1:141155"
                }
            },
            "httpResponse": {
                "body": {
                    "data": [{
                            "data": "some first response"
                        }
                    ],
                    "status": "success"
                }
            }
        },
        {
            "httpRequest": {# 期望2
                "path": "/.*" 
            },
            "httpForward": { # 代理转发请求
                "host": "qa-qs0",
                "port": 6068,
                "scheme": "HTTP"
            }
        }
    ]

    3. 编写shell脚本管理

    使用shell脚本启动停止服务也可以将mock-server配置到systemctl。脚本是centos下写的比如netstat命令与macos有点冲突,所以在macos下使用可能有点问题。

    百度云盘下载地址

    脚本运行方式
    脚本运行方式

    # 目录结构
    mockserver
    ├── conf
    │   ├── logging.properties
    │   └── mock-server.json
    ├── lib
    │   └── mockserver-netty-5.8.1-jar-with-dependencies.jar
    ├── log
    │   ├── mock-server.log.0
    │   └── mock-server.log.0.lck
    └── mock-server.sh

    测试与附件

    1. 测试期望

    预期期望-预期返回
    预期期望-预期返回

    预期期望-代理转发
    预期期望-代理转发

    2. 通过接口管理期望

    重置期望
    重置期望

    设置期望
    设置期望

    修改期望后-请求返回
    修改期望后-请求返回

    3. logging.properties例子

    # To use this file set System Property on JVM as follows: -Djava.util.logging.config.file=/path/to/logging.properties
    # Logging
    handlers = java.util.logging.FileHandler, org.mockserver.logging.StandardOutConsoleHandler
    .level = ALL
    
    org.mockserver.level = INFO
    io.netty.handler.ssl.SslHandler.level = WARNING
    java.util.logging.SimpleFormatter.format = %1$tF %1$tT  %4$s  %5$s %n
    
    # File Logging
    java.util.logging.FileHandler.pattern = log/mock-server.log
    java.util.logging.FileHandler.formatter = java.util.logging.SimpleFormatter
    java.util.logging.FileHandler.limit=50000
    java.util.logging.FileHandler.count=3
    java.util.logging.FileHandler.level=DEBUG
    java.util.logging.FileHandler.append=true
    
    # Console Logging
    org.mockserver.logging.StandardOutConsoleHandler.level = ALL
    org.mockserver.logging.StandardOutConsoleHandler.formatter = java.util.logging.SimpleFormatter
  • 相关阅读:
    SQL Server 2008 允许远程链接 解决方法
    对上传图片进行剪切的jquery插件
    解决在IE6 下,css中的position:fixed 不起作用的办法
    对网站搞评比投票活动的总结
    关于设置sql server 2008服务器属性时出现的无法加载xplog70.dll文件的问题
    Android LayoutInflater的使用
    在Android中查看和管理sqlite数据库
    android开发的WARNING: Could not initialize OpenglES emulation, using software renderer问题的解决
    Android 常用错误及解决方法
    解决MyEclipse启动速度慢,提高MyEclipse启动速度
  • 原文地址:https://www.cnblogs.com/h-zhang/p/12201766.html
Copyright © 2011-2022 走看看