天天看點

使用apimocker工具輔助測試

工具連結:

https://github.com/gstroup/apimocker

背景:

QA在内網部署伺服器環境,但系統涉及服務太多,無法部署所有服務,并且ABTest(Maestro)服務使用Google OAuth做授權認證,測試環境沒有域名,無法搭建實際的Maestro服務。在後端(one-eye)服務的代碼中,每次對Maestro服務的請求均傳回特定的json字元串,是以這種情況非常适合簡單搭建一個mock server來模拟API,繞過真實的Maestro服務。

追蹤one-eye代碼,發現所有對maestro的請求都是根據call_maestro_placements_api調用placements接口,是以,我們隻要修改配置并mock一個http://<server_ip>:7878/placements接口并傳回自己想要的資料即可。

# maestro_service.rb
def call_maestro_placements_api(query)
      RestClient::Request.execute(method: :get, url:  "#{OneEye::MAESTRO_API_URL}/placements#{URI.encode(query)}", headers: headers, timeout: self::TIMEOUT)
end

# 配置檔案one-eye/config/env_config.rb
  MAESTRO_API_URL = 'http://<server_ip>:7878'
  MAESTRO_TESTS_ENABLED = true
           

使用:

1.安裝apimocker服務

sudo npm install -g apimocker
           

 2.啟動apimocker

# 指令格式
# apimocker \[-c, --config <path>\] \[-q, --quiet\] \[-p <port>\] \[-f, --proxy <proxyURL>\] \[-i, --intercept <proxyIntercept>\]

#使用預設配置啟動
cd /
find ./ -name apimocker  # 根路徑下查找apimocker所在安裝路徑

cd /usr/lib/node_modules/apimocker # 進入apimocker安裝路徑
apimocker
           

若報錯,請檢查安裝包所在的配置檔案json格式是否正确。通常apimocker安裝在/usr/lib/node_modules/apimocker目錄下。

3.配置目标API

配置apimocker/config.json檔案,webServices節點增加以下内容

"placements":{
	  "mockFile": "placements.json",
	  "verbs": [
	    "get"
	  ]	
	},
           

配置apimocker/samplemocks/placements.json檔案為目标傳回内容

{"admin-member-invite":"enabled",
"activity-studio":"enabled",
"enterprise-invite-members":"enabled",
"opengroup":"enabled",
"automatically-record-zoom-meeting":"ready_state",
"whats-new-announcements":"ready_state",
"print-quiz-submissions":"enabled",
"new-assignment-grading":"enabled",
"new-assignment-submission":"enabled"}
           

4.重新啟動apimocker服務并驗證API

執行apimocker後,浏覽器通路http://<server_ip>:7878/placements,如果頁面能夠傳回placements.json的内容,說明API運作ok

5.更新後端配置生效

修改前文中one-eye的配置檔案one-eye/config/env_config.rb

  MAESTRO_API_URL = 'http://<server_ip>:7878'

  MAESTRO_TESTS_ENABLED = true

重新開機one-eye服務,使配置生效

繼續閱讀