Python教程

python---requests接口自动化知识点

本文主要是介绍python---requests接口自动化知识点,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

接口自动化测试:
主要应用在系统测试阶段,应用于回归测试环节

requests库:可以发起http请求,并接收请求的响应。
安装:pip install requests

get()请求:
requests.get(),get请求的参数可以写在url里,写在url里时,参数和url之间需要加?
get请求的参数可以不写在url里,可以组织为字典传给参数param。
get请求可以不传参数。

获取响应信息:
r = requests.get(url)
r.status_code # 获取响应状态码
r.text # 获取响应正文
r.headers # 获取响应头
r.json() # 获取响应json信息,并且将jsons解析为字典
r.cookies # 获取响应的cookie,cookie为cookie jar格式,一般会使用dict()将jar格式cookie转换为字典
r.ok #判断接口是否请求成功,返回值为bool型,True表示访问成功,False表示失败。
r.raw # 获取原始响应体
r.reason # 获取接口访问失败的原因
r.raise_for_status() # 获取请求失败抛出的异常
r.content #以二进制解析响应信息并接收,当r.text接收的响应信息中存在乱码:??3?o???o时使用
r.content.decode(“utf-8”):#r.content接收响应信息中\xe7\x99\xbe\xe5\说明存在压缩数据,使用.decode(“utf-8”)指定utf-8编码解析。

在发起https请求是,可以设置参数verify=False ,不校验安全证书。

忽略警告信息:
import urllib3
urllib3.disable_warnings() #忽略警告信息

post请求:
requests.post(): 参数不能写在url中。
如果接口传参的数据格式为form表单类型,接口的参数需要组织为字典传参给data
如果接口参数的数据格式为json(),接口的参数需要转换为json,传参给参数json

如何判断post接口传参传给data还是json?
1、看请求头中Content-Type字段:
如果Content-Type: application/json 说明需传参给json
2、看参数的长相:
在fiddler的Raw中
如果参数是{“key1”:“value1”,“key2”:“value2”}—这种传json
如果参数是"key1=value1&key2=value2&key3=value3"—这种传data

常见Content-Type类型:
Content-Type: application/json
Content-Type: application/x-www-form-urlencoded:表单格式
Content-Type: application/form-data:这是一种表单格式(实现文件、图片上传)
Content-Type: octes/stream : 文件下载

当get()或post()访问接口时,如果需要传入cookie,可以直接传入jar格式的cookie,也可以传入字典格式cookie

cookie:
cookie是存储与访问者计算机的变量。由浏览器负责存储在电脑本地。一般加密存储,但是由于存储在客户端,很容易被
非法访问,不太安全。cookie中不适合存储敏感信息(例如密码)。
cookie中存储的信息是服务器决定的。cookie可以在响应的header中也可以在响应的正文中也可以在响应的url中。如果cookie在响应的header中
可以直接使用cookies来接收,如果cookie在响应的正文中或者响应的url中,一般需要正则来提取cookie。

cookie有时效性,有效时间由服务器决定。cookie可以跨同一域名下网页使用,但是不能跨域名。

session():session可以理解为一个无界面的微型的浏览器,可以自动管理cookie,当多个接口之间需要关联时,不需要进行cookie
传参了。不是http协议中的session。

session()对象人工设置cookie:
jar = requests.cookies.RequestsCookieJar() # 实例化一个RequestsCookieJar对象

设置cookie,cookie中键值对有几个set几次

jar.set(“Cookie_Lang_OA”,“zh_CN”)
jar.set(“LoginId_OA”,“sup”)
jar.set(“JSESSIONID”,“3F903C443E846F8BDA3B4B74E29E0530”)
s.cookies.update(jar) #将cookie设置到session对象上

token:服务端产生,在首次访问服务端时,由服务端返回给前端。前端可以在每次发起请求时,带上token证明请求的合法性。

token处理过程:
1、访问登录页面,接收响应的正文
2、从正文中利用正则将token提取出来。
3、将提取的token设置的请求的header中。
4、将header传参给请求的headers参数。

重定向(redirect):就是通过各种方法将网络请求重新定个方向转到其他位置。
状态码:
301:代表永久性重定向 302:代表暂时性重定向

在发起请求时,需要需要设置参数allow_redirects=False,禁止重定向。allow_redirects=True是启动重定向,会自动处理重定向后的地址,就无法获取重定向后的url,就无法下一步。

重定向后的url在响应的header中,需要使用headers接收响应的header,Location就重定向后url。Location作为键可以获取。

模拟ajax异步请求:
Ajax即asynchronous JavaScript and XML :是一种前后端交互方式,可以在无需加载整个页面的情况下,更新部分网页。可以减少前后端
数据量的交换,是网页实现异步更新。
如何判断是异步请求?
如果在发起的请求header中包含参数:“x-requested-with”: “XMLHttpRequest”。

对于异步请求,header中必须设置参数"x-requested-with": “XMLHttpRequest”,否则响应的json(),无法接收。

接口实现文件上传:
上传文件的参数需要定义为一个列表:,
例如:img_param=[(“参数名”,(“上传后文件名称”,open(文件路径,“rb”),‘MIME类型’))]
注意:open函数中打开上传文件时必须以二进制读取(rb)模式打开

MIME(Multipurpose Internet Mail Extensions)多用途互联网邮件扩展类型。是设定某种扩展名的文件用一种应用程序来打开的方式类型,当该扩展名文件被访问的时候,浏览器会自动使用指定应用程序来打开

自动获取MIME类型:
使用filetype库下guess方法
安装:pip install filetype

这篇关于python---requests接口自动化知识点的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!