G04_HttpRunner重定向:WordPress 编写登录用例重定向解决方案

G04_HttpRunner重定向:WordPress 编写登录用例重定向解决方案

 

 

既然 HttpRunner 是对 requests 模块的封装,那我们就试图从 requests 中寻找答案,在其官网中发现了对重定向的描述和处理:

地址:http://cn.python-requests.org/zh_CN/latest/user/quickstart.html#id9

提到:

  • 默认情况下,除了 HEAD, Requests 会自动处理所有重定向。
  • 可以使用响应对象的 history 方法来追踪重定向。
  • 如果你使用的是GET、OPTIONS、POST、PUT、PATCH 或者 DELETE,那么你可以通过 allow_redirects 参数禁用重定向处理

 

 

做个试验:

  • 在 post 请求方法中添加 “allow_redirects=False”参数项
  • 打印获取到的 cookie
import requests


def get_cookies():
    url = 'http://192.168.1.102/wordpress/wp-login.php'
    p_data = {'log': 'admin', 'pwd': '123456'}
    # 添加禁止重定向的参数
    r = requests.post(url, data=p_data, allow_redirects=False)
    print(r.status_code)
    print(r.cookies)


if __name__ == "__main__":
    get_cookies()

 

 

执行后输出:

可以看出请求后没有自动进行重定向,而且输出了我们期盼已久的 cookie 内容。

D:\A00__Dev\pyvirtualenv\hrun\Scripts\python.exe D:/A00__Dev/pyprojects/wordpress/getcookie.py
302
<RequestsCookieJar[<Cookie wordpress_logged_in_6e644cc1baf05aba48f07f1ff2ed9bad=admin%7C1583680440%7CVMAvYccdIvPMVW0759Hu30JJUF5m49EcvYzXk52Dl8X%7Cbea1a3ee35541bd1f4861edc628963864fd070afd6c31e1ac1852b938d05e50c for 192.168.1.102/wordpress/>, <Cookie wordpress_test_cookie=WP%20Cookie%20check for 192.168.1.102/wordpress/>, <Cookie wordpress_6e644cc1baf05aba48f07f1ff2ed9bad=admin%7C1583680440%7CVMAvYccdIvPMVW0759Hu30JJUF5m49EcvYzXk52Dl8X%7C69be9a5715123957fd1e548b365e14f063d6fd883164a7de1420536a2caf759e for 192.168.1.102/wordpress/wp-admin>, <Cookie wordpress_6e644cc1baf05aba48f07f1ff2ed9bad=admin%7C1583680440%7CVMAvYccdIvPMVW0759Hu30JJUF5m49EcvYzXk52Dl8X%7C69be9a5715123957fd1e548b365e14f063d6fd883164a7de1420536a2caf759e for 192.168.1.102/wordpress/wp-content/plugins>]>

Process finished with exit code 0

 

 

HttpRunner 中对请求的封装,是通过统一调用 request() 方法来完成的:

requests.request(method, url, **kwargs)

 

接下来我们就将“allow_redirects=False”参数项添加到测试用例中

- config:
    name: WordPress 博客系统

- test:
    name: WP_login_no_redirect
    request:
      url: http://192.168.1.102/wordpress/wp-login.php
      method: POST
      data:
        log: admin
        pwd: 123456
      # 禁止重定向   
      allow_redirects: False
    extract:
      - a: cookies.wordpress_test_cookie
      - b: cookies.wordpress_logged_in_6e644cc1baf05aba48f07f1ff2ed9bad
      - d: cookies.wordpress_6e644cc1baf05aba48f07f1ff2ed9bad
    validate:
      - eq: [status_code, 302]

 

 

验证用例:

 

执行用例,成功。说明提取指定 cookie 的操作和 302 状态的断言都成功。

 

 

查看测试报告日志:预期结果和实际结果都是302,证明禁止重定向成功。

 

 

 

最后,我们从 httprunner 源码中也可以找到以上方式的印证

\httprunner\loader\schemas\common.schema.json 请求规范:

  • 在测试用例 request 下可以使用 “allow_redirects”属性
  • 该属性支持的请求方法为:GET / OPTIONS / POST / PUT / PATCH / DELETE / HEAD
  • 该属性默认值为:True (自动进行重定向)
"request": {
    "description": "used to define a api request. properties is the same as python package `requests.request`",
    "type": "object",
    "properties": {
        。。。。。。。。。。。。
        "allow_redirects": {
                    "description": "Enable/disable GET/OPTIONS/POST/PUT/PATCH/DELETE/HEAD redirection. Defaults to True",
                    "type": "boolean"
        },
       。。。。。。。,。。。。。 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值