A07_HttpRunner重定向_04_办理方案
既然 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”参数项打印获取到的 cookieimport requestsdef 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.py302<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" }, 。。。。。。。,。。。。。