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: '\> (.*) \&nbsp\;\&nbsp' # 通过正则提取页面中欢迎您:test
    validate:
        - eq: [$s1, 200]    #“status_code” 进行HTTP响应状态码断言
        - eq: [$s2, '欢迎您:test']

  

报告展示

 

posted @ 2021-06-04 10:31  莫使娇躯空对月  阅读(85)  评论(0编辑  收藏  举报