通過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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM