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']
报告展示