利用Requests库完成“蜗牛进销存”的登录功能文章摘要
注:本节教材内容,与上期推送的《教材连载:蜗牛进销存项目实战(一)》为一个项目实战内容。
回顾上节内容,请点击:教材连载:蜗牛进销存项目实战(一)
1.思路分析
首先我们可以看到首页上的登录功能除了用户名和密码外,还有图片验证码。验证码的存在即是为了防止不断的对系统发送请求,避免恶意攻击。为了达到测试效果,我们往往会采取其他策略来绕过验证码,这里对源码进行了处理,设置了一个万能验证码“1111”帮助我们登录成功。

要实现登录首先需要要对请求进行分析,利用HttpWatch分析该请求,可以得到如下信息。
(1)请求类型为POST。
(2)请求类型为application/x-www-form-urlencoded,这是最常见post提交数据的方式,以form表单形式提交数据。
(3)请求正文中的参数有三个,分别对应用户名、密码和验证码。

2.代码实现
在Request库中提供了以form表单形式发送post请求的方式,只需要将请求的参数构造成一个字典,然后传递requests.post()的data参数即可,最后对返回的响应进行输出。
import requests # 构造POST请求正文 loginData = {'username':'boss','password':'boss123','verifycode':'1111'} r = requests.post("http://localhost:8080/WoniuSales/user/login", loginData) print("响应头部:") print(r.headers) print("响应正文:") print(r.text) |
3.响应对象
这里输出响应的头部信息为字典类型,每对键值分别对应到头部的每个字段。响应正文为“login-pass”,登录成功。
响应头部: {'Server': 'Apache-Coyote/1.1', 'Set-Cookie': 'JSESSIONID=41B8C4CA8C4D0B84778F78868EB767D2; Path=/WoniuSales; HttpOnly, username=boss; Expires=Sun, 26-Aug-2018 13:20:11 GMT; Path=/, password=boss123; Expires=Sun, 26-Aug-2018 13:20:11 GMT; Path=/', 'Pragma': 'no-cache', 'Cache-Control': 'no-cache', 'Expires': 'Thu, 01 Jan 1970 00:00:00 GMT', 'Content-Type': 'text/plain;charset=UTF-8', 'Transfer-Encoding': 'chunked', 'Date': 'Fri, 18 May 2018 13:20:11 GMT'} 响应正文: login-pass |
响应对象除了上面列出的headers和text属性之外,还有更加丰富的成员,这里以响应对象为r为例。
(1)r.headers:响应头,保存在字典中。
(2)r.status_code:响应状态码。
(3)r.cookies:返回响应中的cookie信息。
(4)r.text:解码后的响应正文。
(5) r.content:二进制形式的响应正文。
(6)r.raw:来自服务器的原始套接字响应正文。
(7)r.json():用json解码器处理后的响应正文数据。
接下来三周会陆续推送进销存项目实战的其他内容:
(三)利用Requests库对新增会员和测试。
(四)接口测试框架整合。
为了答谢大家对蜗牛学院的支持,蜗牛学院将会定期对大家免费发放干货,敬请关注蜗牛学院的官方微信。

版权所有,转载本站文章请注明出处:蜗牛学院在线课堂, http://www.woniuxy.com/note/276