2.HR 参数化与前置
大约 3 分钟学习笔记测试平台开发
一、 httprunner 用例变量
1. 配置变量(config variables)
- 用于数据解耦 --- 字典类型
- 定义在
config
或者teststep
中 - 变量在引用时,
不使用函数引用
,可以不加大括号{}
用例级别(config 中 配置)
方式 1:直接 指定 参数
config:
name: 登录
base_url: http://120.55.190.222:7080
verify: false
variables: # 用例变量 --- 字典类型
user: auto # 方式 1:直接指定参数的方式
pw: sdfsdfsdf
export: # 返回测试步骤中提取的变量 --- 列表类型
- cookie
teststeps:
- name: 登录
request:
method: POST
url: /api/mgr/loginReq
data:
username: ${user}
password: ${pw}
extract: # 将 sessionid 赋值给 cookie --- 字典类型
cookie: cookies.sessionid
validate:
- eq: ["status_code", 200]
- eq: ["body.retcode", 0]
方式 2:在项目根目录中创建一个名为 debugtalk.py
的文件
debugtalk.py 文件
def login_variables():
return {'user': 'auto', 'pw': 'sdfsdfsdf'}
login.yml 文件
config:
name: 登录
base_url: http://120.55.190.222:7080
verify: false
variables: # 用例变量 --- 字典类型
${login_variables()} # 方式 2:在项目根目录中创建一个名为 debugtalk.py 的文件
export: # 返回测试步骤中提取的变量 --- 列表类型
- cookie
teststeps:
- name: 登录
request:
method: POST
url: /api/mgr/loginReq
data:
username: ${user}
password: ${pw}
extract: # 将 sessionid 赋值给 cookie --- 字典类型
cookie: cookies.sessionid
validate:
- eq: ["status_code", 200]
- eq: ["body.retcode", 0]
步骤级别(teststeps 中 配置)
- 不支持 使用
函数返回值的方式
配置变量 - 当 用例级别 函数名 和 步骤级别 函数名相同时, 步骤级别的 优先级大于 用例级别
config:
name: 登录
base_url: http://120.55.190.222:7080
verify: false
variables: # 用例变量 --- 字典类型
user: auto # 方式 1:直接指定参数的方式
pw: sdfsdfsdf
export: # 返回测试步骤中提取的变量 --- 列表类型
- cookie
teststeps:
- name: 登录
variables:
# 当 用例级别 函数名 和 步骤级别 函数名相同时, 步骤级别的 优先级大于 用例级别
user: auto
pw: sdfsdfsdf
request:
method: POST
url: /api/mgr/loginReq
data:
username: ${user}
password: ${pw}
extract: # 将 sessionid 赋值给 cookie --- 字典类型
cookie: cookies.sessionid
validate:
- eq: ["status_code", 200]
- eq: ["body.retcode", 0]
2. 环境变量(env variables)
- 在 项目 根目录 创建一个名为
.env.txt 文件
.env
文件中的内容不能有空行
.env.txt 文件
username=auto
password=sdfsdfsdf
login.yml 文件
config:
name: 登录
base_url: http://120.55.190.222:7080
verify: false
variables: # 用例变量 --- 字典类型
user: ${ENV(username)}
pw: ${ENV(password)}
export: # 返回测试步骤中提取的变量 --- 列表类型
- cookie
teststeps:
- name: 登录
request:
method: POST
url: /api/mgr/loginReq
data:
username: ${user}
password: ${pw}
extract: # 将 sessionid 赋值给 cookie --- 字典类型
cookie: cookies.sessionid
validate:
- eq: ["status_code", 200]
- eq: ["body.retcode", 0]
二. 参数化(parameter variables)
- 用于参数化 --- 列表类型
- 定义在
config
中
1. 独立参数
运行用例数 = 独立参数的 笛卡尔积
可以运行 八次
config:
name: 登录
base_url: http://120.55.190.222:7080
verify: false
parameters:
user:
- auto
- auto1
pw:
- sdfsdfsdf
- sdfsdf
code:
- 0
- 1
export:
- cookie
teststeps:
- name: 登录
request:
method: POST
url: /api/mgr/loginReq
data:
username: $user
password: $pw
extract:
cookie: cookies.sessionid
validate:
- eq: ["status_code", 200] # 写法 1
- eq: # 写法 2
- body.retcode
- $code
2. 关联参数
运行用例数 = 关联参数组
config:
name: 登录
base_url: http://120.55.190.222:7080
verify: false
parameters:
user-pw-code:
- ["auto", "sdfsdfsdf", 0] # 写法 1
- ["auto1", "sdfsdf", 1]
- # 写法 2
- aout2
- sdfsdf
- 1
export:
- cookie
teststeps:
- name: 登录
request:
method: POST
url: /api/mgr/loginReq
data:
username: $user
password: $pw
extract:
cookie: cookies.sessionid
validate:
- eq: ["status_code", 200]
- eq:
- body.retcode
- $code
3. 关联参数 和 独立参数 混合使用
config:
name: 登录
base_url: http://120.55.190.222:7080
verify: false
parameters:
user-pw:
- ["auto", "sdfsdfsdf"] # 写法 1
- ["auto1", "sdfsdf"]
- # 写法 2
- aout2
- sdfsdf
code:
- 1
- 0
export:
- cookie
teststeps:
- name: 登录
request:
method: POST
url: /api/mgr/loginReq
data:
username: $user
password: $pw
extract:
cookie: cookies.sessionid
validate:
- eq: ["status_code", 200]
- eq:
- body.retcode
- $code
4. 使用 函数 调用参数
debugtalk.py 文件
def login_parameters():
return [
{'user': 'auto', 'pw': 'sdfsdfsdf', 'code': 0},
{'user': 'auto1', 'pw': 'sdfsdfsdf', 'code': 1},
{'user': 'auto', 'pw': 'sdfsdfsdf1', 'code': 1},
]
login_parameters.yml 文件
config:
name: 登录
base_url: http://120.55.190.222:7080
verify: false
parameters:
user-pw-code: ${login_parameters()}
export:
- cookie
teststeps:
- name: 登录
request:
method: POST
url: /api/mgr/loginReq
data:
username: $user
password: $pw
extract:
cookie: cookies.sessionid
validate:
- eq: ["status_code", 200]
- eq:
- body.retcode
- $code