接口自动化测试-python-笔记
概念
接口测试:是对系统或组件之间的接口进行测试,主要是校验数据的交换、传递和控制管理过程,以及相互逻辑依赖关系。
自动化测试:是把以人为驱动的测试行为转化为机器执行的一种过程。
实现方式
使用接口测试工具来实现,比如:JMeter
通过编写代码来实现
接口测试工具的不足
1.测试数据不好控制
2.不方便测试加密接口
3.扩展能力不足
Requests库
介绍
Requests库是用Python编写的,基于urllib,采用Apache2Licensed开源协议的HTTP库;相比urllib库,Requests库更加方便,可以节约我们大量的工作,完全满足HTTP测试需求;
安装
pip install requests
发送请求
常见的HTTP请求方式:GET、POST、PUT、DELETE、HEAD、OPTIONS
使用requests发送网络请求非常简单,只需要调用HTTP请求类型所对应的方法即可。
GET请求
import requests
response = requests.get("http://www.baidu.com")
请求方法的返回值response为Response对象,我们可以从这个对象中获取所有我们想要的响应信息。
POST请求
import requests
#:paramurl:请求的URL
#:paramdata:(可选)要发送到请求体中的字典、元组、字节或文件对象
#:paramjson:(可选)要发送到请求体中的JSON数据
#:rtype:requests.Response
response=requests.post(url,data=None,json=None)
其他请求类型
import requests
response=requests.put("http://www.baidu.com",data={"key":"value"})
response=requests.delete("http://www.baidu.com")
response=requests.head("http://www.baidu.com")
response=requests.options("http://www.baidu.com")
传递URL参数
如果需要在URL的查询字符串中传递数据,可以使用params参数来定义,params传递的参数可以是字符串或字典。
import requests
response=requests.get("http://www.baidu.com",params="kw=python")
print(response.url)#http://www.baidu.com/?kw=python
params={"k1":"v1","k2":["v2","v3"]}
response=requests.get("http://www.baidu.com",params=params)
print(response.url)#http://www.baidu.com/?k1=v1&k2=v2&k2=v3
响应内容
请求方法的返回值response为Response对象,我们可以从这个对象中获取所有我们想要的响应信息。
response.status_code 状态码
response.url 请求url
response.encoding 查看响应头部字符编码
response.headers 头信息
response.cookies cookie信息
response.text 文本形式的响应内容
response.content 字节形式的响应内容
response.json() JSON形式的响应内容
JSON响应内容
如果请求响应的内容为JSON格式的数据,则可以直接调用response.json()方法获取数据,因为requests中内置了JSON解码器,帮助我们处理JSON数据。
response=requests.get("http://www.baidu.com")
json_data=response.json()
如果JSON解码失败,response.json()就会抛出一个异常
定制请求头
如果需要为请求添加请求头数据,只需要传递一个字典类型的数据给headers参数就可以了。
headers={"area":"010"}
response=requests.get("http://www.baidu.com",headers=headers)
Cookie
获取响应信息中的cookie数据:
response=requests.get("http://www.baidu.com")
print(response.cookies)
发送请求时添加cookie数据,可以使用cookies参数:
requests.get("http://www.baidu.com",cookies={"c1":"v1"})
Session
在requests里,session对象是一个非常常用的对象,这个对象代表一次用户会话:从客户端浏览器连接服务器开始,到客户端浏览器与服务器断开。会话能让我们在跨请求时候保持某些参数,比如在同一个session实例发出的所有请求之间保持cookie。
创建session对象
session=requests.Session()
得到session对象后,就可以调用该对象中的方法来发送请求。