携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第1天,点击查看活动详情
安装requests库
pip 安装
pip install requests
Pipenv
如果你更喜欢使用 Pipenv 来管理 Python 包,你可以运行以下命令:
pipenv install requests
使用
导包
import requests
通用方法
method,url [,data]
-
get请求:
requests.request(method='GET',url='http://localhost:8081/agileone/') -
post请求:
requests.request(method='POST', url='[http://localhost:8081/agileone/index.php/common/login](http://localhost:8081/agileone/index.php/common/login)', data={"username":"admin","password":"admin","savelogin":"true"})
定制方法
- GET请求
`res3=requests.get(url='`[`http://localhost:8081/agileone/`](http://localhost:8081/agileone/)`')#发送GET请求`
- POST请求*
res4=requests.post(url='http://loalhost:8081/agileone/index.php/common/login',
data={"username":"admin","password":"admin","savelogin":"true"})
res5=requests.post(url='http://localhost:8081/agileone/index.php/common/login',
headers={'Content-Type': 'application/x-www-form-urlencoded'},
data='username=admin&password=admin&savelogin=true')
获取相应
res.text获取文本res.content获取字节型文本【res2.content.decode() 字节型转换为文本型】res.status_code获取响应状态码res.cookies获取cookie信息,返回cookiejarres.headers.get('Set-Cookie')获取cookie信息,依据字典中的键名获取键值信息res.request获取请求方法res.url获取请求地址res.headers获取响应头部信息
保持登录
cookie手工管理
-
headers:字典形式传递
-
直接传递cookies:以cookieJar形式
requests.post(url=url,data=data,cookies=res5.cookies)
-
直接传递cookies,以字典形式
cookies=requests.utils.dict_from_cookiejar(res5.cookies)#RequestsCookieJar-->dict
requests.post(url=url,data=data,cookies=cookies) 发请求
session自动管理
- 以session方式建立会话,将cookie实现自动管理,先登录,再发其他的请求
sess=requests.session()#创建会话
sess.post(url='http://192.168.200.148:8081/agileone/index.php/common/login',
headers={'Content-Type': 'application/x-www-form-urlencoded'},
data='username=admin&password=admin&savelogin=true')
例子:
上传文件
断言
-
断言:状态码+响应结果结合断言 200 +符合预期
-
断言思路
- 1.有返回值,则用接口返回值断言【状态码+响应结果结合断言 200 +符合预期】【结果形式:固定的字符串--相等?;页面源代码--关键字包含?;动态的字符串--正则表达式匹配?,json字符串--转换为字典依据键名取键值?】
- 2.没有返回值?业务逻辑断言--借助业务相关的接口进行断言【出库接口,出库成功,执行批次查询的接口获取库存信息更新正确性?】
- 3.没有返回值?数据库断言--慎重!!一定要搞清楚表结构,有可能更新了多张表【例如出库成功后,明细表更新,库存表更新,会员表更新,销售表更新】
接口测试:
关注系统间的组件之间的接口【外部接口,支付接口--第三方:微信 支付宝 银联等--沙箱测试】,系统内部的接口【内部】
测试思路--测试关注点【功能性,安全性,性能】:接口参数校验,正常业务,异常业务(空,错误,无效cookie,错误的cookie,空cookie)---1个业务可能一个接口,也可能是多个接口,考虑关联性【上下游关系】安全测试-接口的加密?订单信息篡改-篡改金额,重复订单?JS注入 性能测试 可用性--接口规范性
接口文档
文档描述
名称:接口功能名称
描述:业务类描述
URL:访问的接口地址
调用方式:请求方法GET,POST
传入参数:接口参数,参数的数据局类型及约束【非空,长度,精度,规则约束】 login 接口 username password verifycode
返回值:返回值类型 text json html
状态码:现实的产品大多不用HTTP原生的状态码,将状态码与业务挂钩 10001 成功 10002 失败 10003 认证失败 10004参数错误