相关文档
HttpRunner V3.x中文文档
HttpRunner 用户指南
使用HttpRunner 3.x实现接口自动化测试
HttpRunner介绍
HttpRunner
是一个开源的 API 测试工具,支持 HTTP(S)/HTTP2/WebSocket/RPC 等网络协议,涵盖接口测试、性能测试、数字体验监测等测试类型。简单易用,功能强大,具有丰富的插件化机制和高度的可扩展能力。
yaml中支持的参数
config
在HttpRunner中,config参数可以支持以下关键字:
name
: 测试配置的名称,一般用于描述测试的主要功能。
variables
: 定义测试配置的全局变量,这些变量可以在整个测试配置中使用。
parameters
: 用于参数化数据驱动,生成多个测试用例。
base_url
: 定义接口请求的基础URL。
verify
: 是否进行https证书验证,默认为True。
setup_hooks
: 设置前置钩子,执行测试配置前执行一些特殊动作。
teardown_hooks
: 设置后置钩子,执行测试配置后执行一些特殊动作。
teststeps
在HttpRunner中,teststeps参数可以支持以下关键字:
name
: 测试步骤的名称,一般用于描述测试步骤的主要功能。
variables
: 用于定义本测试步骤的局部变量。
extract
: 用于从接口的响应结果中提取数据存储为变量,供后续的测试步骤使用。
validate
: 用于定义接口响应结果的断言验证规则。
request
: 用于定义接口请求的详细信息,包括url、method、params、data、headers、cookies等。
setup_hooks
: 设置前置钩子,主要用于在测试步骤执行前执行一些特殊动作。
teardown_hooks
: 设置后置钩子,主要用于在测试步骤执行后执行一些特殊动作。
include
: 用于引入其他的测试用例。
testcase
: 用于引入其他的测试用例作为当前测试步骤。
变量引用
$变量名
或 ${变量名}
PS:如果用例存在$
符号,可通过 $$
转义
变量优先级
step variables
> session variables
> parameter variables
> config variables
yml格式测试用例示例
config:
name: "test suite description" # 测试套件描述
variables: # 定义全局变量
var1: "value1"
var2: "value2"
parameters: # 实现参数化数据驱动
game: [game1, game2, game3]
base_url: "http://your-base-url.com" # 基础url
verify: False # 是否进行https证书验证
setup_hooks: # 配置前置hook
- ${hook1()}
teardown_hooks: # 配置后置hook
- ${hook2()}
teststeps:
- name: api_A
variables: # 定义局部变量
var3: "value3"
url: /api/a # 接口A的url
method: GET
params: # 定义请求参数
key: value
headers: # 定义请求头
Content-Type: "application/json"
include: "login.yml" # 假设存在一个名为 login.yml 的测试用例,引用login.yml整个测试用例(包括配置和测试步骤),在当前测试步骤开始前执行
extract: # 提取接口A返回的data值,存储在变量data中
- data: body.data.items
validate: # 断言验证
- eq: ["status_code", 200] # 判断响应状态码是否为200
- eq: ["content.status", "success"] # 判断响应内容中的status是否为success
- include: ["body.code", ["OK", "Receiver Buyer Same", "Receiver Not Exist", "Alipay Balance Not Enough"]] # 判断响应内容中的code是否等于后面列表中某一个值
- name: api_B
setup_hooks:
- ${setup_hook()} # setup_hook是你自定义的前置钩子函数
testcase: "api_b.yml" # 假设存在一个名为 api_b.yml 的测试用例,引用 api_b.yml 中的测试步骤,在当前测试步骤开始前执行
url: /api/b # 接口B的url
method: POST
headers:
Content-Type: "application/json"
data: # post类型接口参数可以用data或json或files
param: $data # 使用上一步提取的data作为接口B的参数
validate: # 断言验证
- eq: ["status_code", 200] # 判断响应状态码是否为200
- eq: ["body.code", "OK"] # 判断响应内容中的code是否为OK
teardown_hooks:
- ${teardown_hook()} # teardown_hook是你自定义的后置钩子函数