注:本节教材内容,与上两期推送的《教材连载:蜗牛进销存项目实战(一)》、《教材连载:利用Requests库完成“蜗牛进销存”的登录功能》为一个项目实战内容。
回顾上节内容,请点击:
教材连载:蜗牛进销存项目实战(一)
教材连载:利用Requests库完成“蜗牛进销存”的登录功能
利用Requests库新增会员
1.发送请求
下图是新增会员的功能,填写正确的字段后即可新增成功。

通过对该请求的分析,我们依然构造正文,并发送新增的POST请求。
import requests # 构造请求正文 addData = {'customername':'小蜗牛','customerphone':'13500000000','childsex':'女','childdate':'2018-05-18','creditkids':'100','creditcloth':'200'} # 发送请求 r = requests.post("http://localhost:8080/WoniuSales/customer/add",addData) # 输出响应正文 print(r.text) |
结果并不如我们所料,返回的是一个错误的页面,并且通过页面的查询也没有出现新增的会员“小蜗牛”,这里的代码和登录的POST请求一样,为什么不能达到类似的效果?
<html><head><title>500 Internal Server Error</title></head><body bgcolor='white'><center><h1>500 Internal Server Error</h1></center><hr><center><a href='http://www.jfinal.com?f=ev-3.2' target='_blank'><b>Powered by JFinal 3.2</b></a></center></body></html> |
2.定制请求头cookie
回顾前面的内容,Http协议是一种无连接无状态的协议,当用户处理登录状态时我们才可以进行后续的操作,那通过协议的角度,这里我们并没有保持登录的状态,所以添加上对应的cookie值即可。
import requests # 定制cookie cookie = {'Cookie':'JSESSIONID=8C61635F9F68E2E068F627A4927494BA'} # 构造请求正文 addData = {'customername':'小蜗牛','customerphone':'13500000000','childsex':'女','childdate':'2018-05-18','creditkids':'100','creditcloth':'200'} # 发送请求 r = requests.post("http://localhost:8080/WoniuSales/customer/add",addData) # 输出响应正文 print(r.text) |
运行结果正确。
add-successful |
需要注意的是,这里的cookie值由于是我们已经预先在浏览器上进行了登录,直接复制了一个有效的cookie值来使用,所以能够正常操作成功,但实际情况是,我们不可能每次都预先登录好,再来编写Python程序,这显然是不科学的。
3.实时获取cookie
由于cookie值在登录后才有效,所以我们的思路是:对系统先进行登录,再从登录的响应里获取到cookie,并将此cookie保存下来,供其他请求使用,代码如下。
import requests # 获取登录后的响应 loginData = {'username':'boss','password':'boss123','verifycode':'1111'} loginRes = requests.post("http://localhost:8080/WoniuSales/user/login",data=loginData) # 构造请求正文 addData = {'customername':'小蜗牛02','customerphone':'13200000000','childsex':'女','childdate':'2018-05-18','creditkids':'100','creditcloth':'200'} # 发送请求,重点是添加cookies参数 addRes = requests.post("http://localhost:8080/WoniuSales/customer/add",data=addData,cookies=loginRes.cookies) print(addRes.text) |
这里的重点是:登录过后获取到的响应是loginRes,再将此响应的cookies值作为post请求的参数发送到服务器,服务器经过校验,确认此cookie有效,则新增成功。同样的,我们也可以通过会员管理的查询功能查看到“小蜗牛02”已新增成功。这样一来,当我们进行测试时,不用每次都去手工复制cookie的值,整个程序的流程更加通畅。
利用Requests库对新增会员进行测试
前面的工作已经让我们可以正常的发送请求,这也为接下来的测试打下了良好的基础。有的读者在疑惑:难道前面做了这么多工作还没有开始测试?不要忘了,测试最重要的一个步骤,对结果进行断言,虽然我们可以利用肉眼来观察结果进而得出结论,但自动化最主要的目的之一就是为了解放人力,这显然是与其相悖的。
1.理解接口文档
在实际项目中,设计一个接口之前,需要经过讨论确定接口的规格,以便于后续的团队协作,开发人员会基于此文档去编写接口,测试人员也将其作为接口测试的重要依据。所以接口文档对测试人员来说非常重要,也可视为接口测试的测试需求。下面我们将展示会员管理的接口文档。
接口名称 | 会员管理新增接口 |
URL地址 | http://localhost:8080/WoniuSales/customer/add |
调用方式 | POST 版权所有,转载本站文章请注明出处:蜗牛笔记, http://www.woniunote.com/article/86
${comment['nickname']} ${comment['createtime']}
${comment.content}
${reply.nickname} 回复 ${comment.nickname}
${reply.createtime}
回复内容:${reply.content}
|