httprunner2.x--提取固定名称的sessionid并进行关联
SessionID 存在于临时 cookie 中,HttpRunner 可以从cookie中直接提取需要的值,而且要求 cookie 的键名称必须是固定不变的,
提取方式为:
extract: - 变量名称: cookies.键名称
案例
httprunnermanager平台登录接口
通过抓包得知
登录/api/login/返回sessionid

重定向到/api/index/页面时自动添加sessionid

所以,步骤
1、先访问登录接口,返回Set-cookies,并从中获取sessionid;注意此接口为302重定向,
如果需要禁止重定向可以添加 allow_redirects: False
2、访问index接口,将登录接口提取的sessionid传给index接口,断言页面中 “欢迎您:test”
代码实现
将登录接口和index接口分别写在api目下下2个文件中
httprunnermanager_login.yml
name: httprunnermanager_login api # 获取固定名称sessionid
base_url: http://127.0.0.1:8000
request:
data:
account: test
password: 123456
url: /api/login/
method: POST
headers:
Content-Type: application/x-www-form-urlencoded
User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36
(KHTML, like Gecko) Chrome/88.0.4324.190 Safari/537.36
# 禁止重定向
allow_redirects: False
#validate:
# - eq: ["status_code", 302]
index.yml
name: index
base_url: http://127.0.0.1:8000
request:
url: /api/index/
method: GET
headers:
User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36
(KHTML, like Gecko) Chrome/88.0.4324.190 Safari/537.36
sessionid: $sessionid
#validate:
# - eq: ["status_code", 200]
测试用例
test_httprunnerlogin.yaml
config:
name: 提取 固定名称sessionid
base_url: http://127.0.0.1:8000
teststeps:
-
name: 第一步:调用登录接口,并提取sessionid
api: api/httprunnermanager_login.yml
extract:
- sessionid: cookies.sessionid #提取sessionid
validate:
- eq: ['status_code', 302]
-
name: 第二步:传入sessionid
api: api/index.yml
extract:
- s1: status_code #提取响应状态码
- s2: '\> (.*) \ \;\ ' # 通过正则提取页面中欢迎您:test
validate:
- eq: [$s1, 200] #“status_code” 进行HTTP响应状态码断言
- eq: [$s2, '欢迎您:test']
报告展示


浙公网安备 33010602011771号