J03_在HttpRunner中定义独立的接口文件
接口测试的对象就是后端定义好的一个个接口,如果把这些接口独立定义为一个单独的文件,在编写测试用例的时候,就可以方便的实现“一次定义,多次调用”的效果了。
在HttpRunner的源码目录中,有关于 api 接口文件的规范说明:\httprunner\loader\schemas
被测接口说明
码云(gitee.com )是国内一个面向开源及私有软件项目的托管平台,支持git 作为版本库格式进行托管。该平台提供了专门的 API 访问接口,注册用户授权后既可以随时调用。
码云注册页面:https://gitee.com/
码云API文档页面:https://gitee.com/api/v5/swagger#/getV5ReposOwnerRepoStargazers?ex=no
准备工作:
- 注册码云帐号并登录码云平台
- 创建一个仓库,并在仓库中建立一个分支(默认为master分支)
- 打开API文档页面,点击“申请授权”按钮,获得 access_token(自动填入下方参数中)
- 依次选择“仓库 Repositories — 获取单个分支”
打开仓库页面,识别以下参数,准备接口请求时使用:
- 仓库空间地址: youling_zhulongcao
- 仓库名称: Test
- 准备从接口获取的分支名称:master
打开“获取单个分支”API文档页面,测试接口功能:
- 找到“获取单个分支”的访问地址: GET:/v5/repos/{owner}/{repo}/branches/{branch}
- 分别填入请求的所需参数:仓库空间地址、仓库路径(名称)、分支名称
- 点击“测试”按钮:填写参数正确,则页面下方显示该接口返回的响应数据
定义接口文件
其实定义一个接口文件,和编写一个测试用例的测试步骤写法大部分内容几乎都是相同的,主要区别:
- 接口文件定义中去除了用例中的 config 关键字
- 接口文件定义中只保留了一个请求(request),相当于只有一个测试步骤
在api文档中可以定义的属性包括(和用例步骤定义一致):name、base_url、variables、request、setup_hooks、teardown_hooks、extract、validate等。其中必须的属性包括:name、request 。
为以上接口单独定义一个 yml 文件:
1. 为接口文件定义名称(name)和基础的URL地址(base_url)
name: API_Get_Branch
base_url: https://gitee.com/api
2. 把页面中的请求参数全部设置为变量,放置于“variables”区域:
variables:
v_token: ddf33....4c93f5
v_owner: youling_zhulongcao
v_repo: Test
v_branch: master
再次整理该接口参数和变量的对应关系:
接口请求参数名称 | 定义变量名称 | 变量取值 |
access_token | v_token | ddf33....4c93f5 |
owner | v_owner | youling_zhulongcao |
repo | v_repo | Test |
branch | v_branch | master |
3. 在请求 URL 中将用到的三个参数分别引入:
url: /v5/repos/$v_owner/$v_repo/branches/$v_branch
4. 设置请求中需要用到的参数“access_token”
params:
access_token: $v_token
5. 最终定义的 api文件(gitee_api_get_master.yml)如下:
name: API_Get_Branch
base_url: https://gitee.com/api
variables:
v_token: ddf33....4c93f5
v_owner: youling_zhulongcao
v_repo: Test
v_branch: master
request:
url: /v5/repos/$v_owner/$v_repo/branches/$v_branch
method: GET
params:
access_token: $v_token
validate:
- eq: [status_code, 200]
6. 检查语法
7. 接口文件也可以独立运行