python+request接口自动化笔记一
一,接口自动化测试理解
1,概念
(1) 接口测试:是对系统或组件之间的接口进行测试,主要是校验数据的交换、传递和控制管理过程,以及相互逻辑依赖关系。
(2) 自动化测试:是把以人为驱动的测试行为转化为机器执行的一种过程。
(3)故接口自动化测试:让程序或工具代替人工自动完成对接口测试的过程。
2,实现方式
(1)使用接口测试工具来实现,比如:postman、jmeter;
(2)通过编写代码来实现,如(python+requests)
3,测试工具的缺点
(1)测试数据不好控制(无法直接读取或存储json等格式数据)
(2)测试数据加密不方便
(3)扩展性不足(复杂业务逻辑,复杂断言)
二,requests库实现接口测试的方法
1,requests库的介绍
Requests库是使用python编写的,基于urllib,采用Apache2 Licensed开源协议的HTT[库;相比于urllib库,requests库更加方便,封装了大量的接口测试方法,满足接口测试的需要。
2,requests库安装及验证
(1)安装:使用命令 pip install requests
(2)验证:使用命令 pip show requests 可显示响应的版本信息
3,常见的HTTP请求方式:GET、POST、PUT、DELETE、HEAD、OPTIONS等。
三,常用的请求方式使用方法
1, GET请求
import requests
response = requests.get("http://www.baidu.com")
请求方法的返回值response为Response对象,可以从这个对象中获取所需要的响应信息,用于断言操作。
get方法示例:
''' 目标:GET请求方法 案例:http://www.baidu.com 请求:GET 响应:1,响应对象.url :获取请求的url 2, 响应对象.status.code 获取响应状态码 3,响应对象.text 以文本形式显示响应内容 ''' # 1,导包 import requests # 2,调用get请求 r = requests.get("http://www.baidu.com") # 3,获取请求的url print(r.url) # 4,获取响应状态码 print(r.status_code) # 5,以文本形式显示响应内容 print(r.text)
GET请求方法带参数使用总结:
步骤:
导包:import requests
调用get方法 request.get()
示例:
r = request.get("http://www.baidu.com) # r为响应对象
请求含参数形式:
(1). http://www.baidu.com?id = 1001
(2)http://www.baidu.com?id = 1001,1002
(3) http://www.baidu.com?id = 1001&kw = 上海
参数:params参数形式
方式1:params = {"id": 1001}
方式2:params = {"id": "1001,1002"}
方式3:params = {"id":1001,"kw":"上海"}
示例:r = requests.get(url,params = params)
响应对象作用:
(1)获取url :r.url
(2)获取响应状态码 r.status_code
2,POST请求
2.1,作用:添加资源
2.2,应用:
导包:Import requests
调用post方法 requests.post()
示例:requests.post(url,json,hesaders)
2.3,参数:
(1)url:接口地址
(2)json:请求报文
(3)headers:请求头信息
响应状态:r.status_code
响应信息:r.json() # 以json文本形式显示响应内容
2.4,post方法示例:
''' 目标:post方法使用 参数:1,json: 传入json数据 2,headers 传入请求头信息 响应:1,响应对象.json ''' # 1,导包 import requests # 2,调用post方法 # 请求url url = "http://127.0.0.1:8000/api/departments/" # 请求headers headers = {"Content-Type":"application/json"} # 请求json data = { "data":[ { "dep_id":"T01", # ..... } ] } # 3,调用post方法 r = requests.post(url,json=data,headers = headers) # 获取响应对象 print(r.json()) # 获取响应状态码 print(r.status_code)
2.5,post方法使用-参数data和json的区别
(1)data:字典对象;json: json字符串
在python中字典对象和json字符串长得一样,但是后台格式有区别
(2)字典对象与json字符串转换
导入 json模块
使用dumps方法将字典对象转换为字符串: json.dumps(data对象)
使用loads方法将字符串转为字典对象: json.loads(json对象)
扩展:
# python中json.load()、json.loads()、json.dump()、json.dumps()的区别
'''
json.load()从文件中读取json字符串
json.loads()将json字符串转换为字典类型
json.dumps()将python中的字典类型转换为字符串类型
json.dump()将json格式字符串写到文件中
'''
2.6,post请求-响应数据json和text的区别
--1>json():返回的是字典类型,可以通过键名获取响应的值
--2>text : 返回的是字符串类型,无法通过键名来获取响应的值
3,delete方法
3.1 作用:删除资源
3.2 应用:导包: import requests
调用方法:requests.delete()
3.3 响应:
响应状态码:204
示例:
''' 目标:delete方法使用 案例:删除数据 不需要参数 响应:1,响应状态码:204 ''' # 1,导包 import requests # 2,调用delete方法 url = "" r = requests.delete(url) # 3,获取响应状态码 print(r.status_code) # 204
四,常见的响应对象方法:
请求方法的返回值response为Response对象,我们可以从这个对象中获取所想要的响应信息。
--1:status_code
作用:获取响应状态码
示例:响应对象.status_code
--2:url
作用:获取请求的url地址
示例:响应对象.url
--3:encoding
作用:查看默认请求编码格式:响应对象.encoding
设置响应编码格式:响应对象.encoding = "utf-8"
--4:cookies
作用:获取响应cookies信息(服务器产生)
示例:响应对象.cookies
--5:text
作用:以文本形式解析响应内容
示例:响应对象.text
--6:content
作用:以字节码形式解析响应内容
示例:响应对象.content
--7:json()
作用:以json字符串形式解析响应内容
示例:响应对象.json()
代码示例:
''' 目标:响应对象的常用方法 1,encoding: 1,1 获取请求编码 1.2 设置响应编码 2, headers 2.1 获取响应头信息 ''' # 1, 导包 import requests # 2,调用get方法 url = "http://www.baidu.com" r = requests.get(url) # 3,查看默认请求编码 print(r.encoding) # ISO-8859-1 # 4,查看响应信息,以text格式 print(r.text) # 使用ISO-8859-1编码格式,中文部分会乱码 # 5, 设置响应编码 r.encoding = "utf-8" print(r.text) # 6, 查看响应头信息, 包含了服务器返回的token,session等信息,比较重要 print(r.headers)
浙公网安备 33010602011771号