mock以及特殊場景下對mock數據的處理


一、為什么要mock

工作中遇到以下問題,我們可以使用mock解決:

  1. 無法控制第三方系統某接口的返回,返回的數據不滿足要求
  2. 某依賴系統還未開發完成,就需要對被測系統進行測試
  3. 有些系統不支持重復請求,或有訪問訪問頻次限制。如不可重復支付,獲取敏感信息的接口訪問頻次不可高於xx等
  4. 其他情況

 

二、mock的實現原理

一般測試場景中,都是對接口的返回數據進行mock。以http協議為例,

  1. 最簡單的mock,可在mock服務器上保存一份mock數據,並給此mock數據生成對應的url。將要訪問的第三方url,以mock url代替,這樣即可滿足最基本的mock需求。可在此處了解到更多關於此種mock的信息。
  2. 使用proxy實現mock。wiremock/anymock等開源工具可提供此實現。好處在於:
    • 可查看請求及回應,方便獲取mock數據的原型
    • 匹配到規則的請求會返回mock數據,未匹配到的請求訪問原服務
    • 無需修改服務配置,無需重啟服務

最近有接觸到一些函數級別的mock。比如,mockito這個工具,即可實現不發出請求,即可獲得mock數據的功能。

 

三、特殊場景下對mock數據的處理

有些場景對於mock來說較為特殊。比如,某接口對數據有加解密操作,這使得mock的數據無法直觀理解,無法有效率地調整mock數據的內容以完成測試目標。另外,有些rpc協議不具通用性,通用的mock平台來支持此類協議成本太高。所以,我們的需要對我們的方法做一些變通。

1. 對於接口加解密數據,我們開發一個函數,來支持mock數據的加解密。手工測試時,該函數可表現為mock平台的插件;接口自動化時可表現為處理mock數據的函數。也可以采用方法2.

2. 直接將這個函數的邏輯整體mock掉。開發某功能:當程序運行到指定的方法時,不繼續運行函數體,而是發送一個http請求到mock平台,將mock數據return出去。


免責聲明!

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



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