1.requests库作用
requests用来发送http请求以及接收http响应的python第三方库,主要用于接口自动化测试
2.requests库的常用方法
①requests.get() url接口地址,param传参
②requests.post() url接口地址,data传参,json也适用于传参
data和json传参的区别?主要通过请求头Content-Type来区分
Content-Type的作用就是服务器要求传入的报文(参数)的内容的类型
请求四要素:请求方式,请求路径,请求头,请求正文
四种传参方式的类型:
<1>form-data 文件上传
<2>x-www-from-urllencoded 表单提交
<3>raw
text
javascript
json
html
xml
<4>binary 二进制
data和json传参以及Content-Type的关系如下:
<1>data传参:报文是dict类型的,那么默认Content-Type:application/x-www-from- urlencoded
data传参:报文是str类型,那么默认Content-Type:text/plain
<2>json传参:报文可以是dict类型,那么默认Content-Type:application/json
如何确定是那种类型???可以通过抓包工具
③requests.put()
④requests.delete()
⑤requests.request() 可以发送任何类型的请求
不论是get/post/put/delete,最终调用的都是requests.request()方法
method.
url.
params=None.
data=None.
json=None
headers=None.
cookies=None
files=None.
3.requests模块返回的response对象
response.json() 获得返回的字典格式的数据
response.text() 获得返回的字符串格式的数据
response.headers() 响应头
response.content() 获得返回的bytes字节类型的数据
response.status_code() 状态码
response.reason() 返回状态信息
response.cookies()
reasponse.request.xxx 返回请求的数据,eg:请求头,请求参数;
4.json.loads()和json.dumps()
json.loads() 把json字符串转化成dict格式
json.dumps() 把dict格式转化成json格式
5. 请求必须带请求头的接口,以及需要cookies鉴权和session鉴权的接口
<input type="hidden" name="csrf token" value="e7202bf558a7eb34"/>
90%以上的基于web的接口都有cookie鉴权
如果四要素都存在,但是接口的返回值依然出错,那么我们就要考虑是否是cookies鉴权的问题
如何去判断呢?
里面有值就说明有鉴权
有cookie鉴权怎么去解决呢?
①使用cookie关联
② 使用session关联