目标:基于Python结合requests库实现接口自动化测试
大纲:
1.Requests是什么?
2.Get、Post、Put、Delete请求
3.接口中Session、Cookie、Token应用
4.基于Unittest框架继承接口自动化
1.理解接口自动化测试的概念
2.了解接口自动化测试的实现方法
接口测试:是对系统或组件之间的接口进行测试,主要是校验数据的交换、传递和控制管理过程,以及相互逻辑依赖关系。
自动化测试:是把以人为驱动的测试行为转化为机器执行的一种过程。
接口自动化测试:是让程序或工具代替人工自动的完成对接口进行测试的一种过程。
使用接口测试工具来实现,比如:JMeter
通过编码代码来实现,Python-requests
1.测试数据不好控制(无法直接读取或存储json格式)
2.不方便测试加密接口
3.扩展能力不足(复杂业务逻辑)
4.断言不够灵活(复杂的断言)
1.掌握如何使用Requests库
Requests库使用Python编写的,基于urllib,采用Apache2 License 开源协议的HTTP库,相比urllib库,Requests库更加方便,可以节约我们大量的工作,完全满足HTTP测试需求
常见的HTTP请求方式:GET、POST、PUT、DELETE、HEAD、OPTIONS
使用requests发送网络请求非常简单,只需要调用HTTP请求类型所对应的方法即可。
请求方法的返回值response为Response对象,我们可以从这个对象中获取所有我们想要的响应信息。
""" 目标:GET 请求无参演练 案例:http://www.biadu.com 请求: 1.请求方法:GET 响应: 1.响应对象.url #获取请求url 2.响应对象.status code #获取响应状态码 3.响应对象.text #以文本形式显示响应内容 """ import requests url = "http://www.baidu.com" r = requests.get(url) print("请求url:", r.url) print("状态码:", r.status_code) print("响应内容:", r.text) """ 目标:GET 请求带参演练 案例: 1.http://www.baidu.com?id=1001 2.http://www.baidu.com?id=1001,1002 3.http://www.baidu.com?id=1001&kw=北京 请求: 1.请求方法:GET 参数: params:字典或字符串 (推荐使用字典) 响应: 1.响应对象.url #获取请求url 2.响应对象.status code #获取响应状态码 3.响应对象.text #以文本形式显示响应内容 """ import requests url = "http://www.baidu.com" # 不推荐写法 静态 # url ="http://www.baidu.com?id=1001" # 案例1:定义字典 # params = {"id": 1001} # 案例2 # params ={"id":"1001,1002"} # 案例3 params = {"id": 1001, "kw": "北京"} r = requests.get(url, params=params) print("请求url:", r.url) print("状态码:", r.status_code) print("响应内容:", r.text)其他HTTP请求类型,比如:PUT、DELETE、HEAD以及OPTIONS。
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")作用:更新资源
应用:
导包 import requests
调用put方法requests.put()
示例:
r = requests.put(url,json.header)
参数:
参考post方法参数
响应:
r.json()
r.status_code
作用:删除资源
应用:
导包 import requests
调用delete方法requests.delete()
响应:
响应状态码:204
response.status_code 状态码
response.url 请求url
response.encoding 查看响应头部字符编码
response.headers 头信息
response.cookies cookie信息
response.text 文本形式的响应内容
response.content 字节形式的响应内容
response.json() json形式的响应内容
""" 目标:响应对象的常用方法 1.encoding 1)获取请求编码 2)设置请求编码 2.headers 1)获取响应头信息 """ import requests url = "http://www.baidu.com" response = requests.get(url) # 查看请求编码 print(response.encoding) # 设置请求编码 response.encoding = "utf-8" print(response.text) # 查看信息头 print(response.headers) """ 1.cookies 1)获取响应cookies信息 2.content 1)以字节码形式获取响应信息(图片、视频、多媒体) """ import requests url = "http://www.baidu.com" url_logo = "https://www.baidu.com/s?wd=高考&sa=ire_dl_gh_logo&rsv_dl=igh_logo_pcs" response = requests.get(url) response_logo = requests.get(url_logo) # 获取cookie信息 print(response.cookies) # 获取content信息 print(response_logo.content) # 将图片写入当前目录 with open("./baidu.png", "wb") as f: f.write(response_logo.content)