当前位置: 首页 > 工具软件 > mocker-api > 使用案例 >

使用apimocker工具辅助测试

淳于哲
2023-12-01

工具链接:

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服务,使配置生效

 类似资料: