一、config参数说明
关键词 | 是否必须 | 数据类型 | 描述 |
name | 是 | string | 测试用例名称,在测试报告中将作为标题 |
base_url | 否 | string | 接口访问地址的公共部分 |
variables | 否 | list of dict | 定义全局变量,作用域为整个用例 |
verify | 否 | boolean | 是否验证服务器的TLS证书 |
export | 否 | list |
整个用例输出的参数列表,可输出的参数包括公共的 variable 和 extract 的参数; 在 log-level 为 debug 模 式下,会在 terminal 中打印出参数内容 |
setup_hooks | 否 | list | 在整个用例开始执行前触发hook函数,主要用于准备工作 |
teardown_hooks | 否 | list | 在整个用例开始执行后触发hook函数,主要用于测试后的清理工作 |
二、test参数说明
关键词 | 是否必须 | 数据类型 | 描述 |
name | 是 | string |
测试步骤的名称,在测试报告中将作为测试步骤的名称 |
request | 否 | dict | http请求的详细内容 |
variables | 否 | list of dict | 测试步骤中定义的变量,作用域为当前测试步骤 |
extract | 否 | list |
从当前 HTTP 请求的响应结果中提取参数,并保存到参数变量中(例如 token), 后续测试用例可通过$token的形式进行引用 |
validate |
否 | list of dict |
测试用例中定义的结果校验项,作用域为当前测试用例,用于实现对当前测试用例运行结果的校验 |
setup_hooks |
否 | list |
在 HTTP 请求发送前执行 hook 函数,主要用于准备工作 |
teardown_hooks |
否 | list |
在 HTTP 请求发送后执行 hook 函数,主要用于测试后的清理工作 |
三、extract关键词
可以提取的:
status_code, cookies, elapsed, headers, content, text, json, encoding, ok, reason, url.
支持多种提取方式:
1. 响应结果为 JSON 结构,可采用.运算符的方式,例如headers.Content-Type、
content.success;
2. 响应结果为 text/html 结构,可采用正则表达式的方式,例如<title>(.+?)</title>
四、validate关键词
支持两种格式:
{"comparator_name": [check_item, expect_value]}
{"check": check_item, "comparator": comparator_name, "expect": expect_value}
hooks
五、request关键词
request关键词中包括http请求中的详细内容:
headers:请求头部信息 method: 请求方式 url:请求地址 params:GET请求参数 data:表单形式的参数 json:json格式的参数
六、设置接口关联
在实际的接口测试中,后一个接口经常需要用到前一个接口返回的结果,从而让后一个接口能正常执行,这个过程的实现称为关联。
提取的方式有两种:
1、响应结果为 JSON 结构,可采用.运算符的方式,例如headers.Content-Type、content.success;
2、响应结果为 text/html 结构,可采用正则表达式的方式,例如name="csrf_token" value="(.+?)"/>
引用变量的方式采用$ + 变量名称的方式;
举例:
七、环境变量
项目中新建.env文件,填写内容:URL=xxxx,测试用例中引用环境变量 ${ENV(URL)}
八、debugtalk.py 应用
编写debugtalk.py文件,内容如下:
测试用例文件中调用如下:
九、hook应用
debugtalk.py文件中编写代码如下:
测试用例代码如下:
十、参数化
新建testsuite目录,编写文件如下:
运行:hrun . /testsuite/testsuite_demo_01.yml