1,接口自动化测试
1.1 概念
接口测试:是对系统或者组件之间的接口进行测试,主要是校验数据的交换,传递和控制管理过程,以及相互逻辑依赖关系。
接口自动化测试:让程序代替人为对接口项目进行自动验证测试的过程
1.2 实现方式
1,工具(jmeter,postman)
2,代码(python-requests)
1.3 测试工具缺点
1,测试数据不好控制(无法直接读取或存储json格式)
2,测试数据加密不方便
3,扩展性不足(复杂业务逻辑,复杂断言)
2,Requests库
2.1 Request库
2.1.1介绍
1)使用Python编写的
2)使用开源协议(Apache2 Licensed 开源协议的HTTP库),基于urlib做的二次封装
3) Requests库中封装了相应接口测试方法
2.1.2 安装及验证
安装:
pip install requests
验证:
pip show requests -->显示相应的版本信息
2.1.3 常见的HTTP请求方式
GET,POST,PUT,DELETE,HEAD,OPTIONS
使用requests发送网络请求非常简单,只需要调用HTTP请求类型所对应的方法即可
3,GET方法的使用
3.1 Get方法
1)作用:获取资源(查询)
2)步骤:
导包 import requests
调用GET方法:request.get()
`'''案例:http://www.baidu.com
请求:
1,请求方法:GET
响应:
2,响应对象.url # 获取请求URL
3,响应对象.status_code # 获取响应状态码
4,响应对象.text # 以文本形式显示响应内容
'''
# 1,导包
import requests
# 2,调用get
url = 'http://www.baidu.com'
r = requests.get(url) # r为响应数据对象response
# 3,获取请求URL地址
print('请求url:',r.url)
# 4,获取响应状态码
print('响应状态码',r.status_code)
# 5,获取响应信息,文本形式
print('文本响应内容:',r.text)`
3.2,GET方法带参使用
示例:
r = requests.get('http://www.baidu.com') # r为响应数据对象response
请求含参数
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)方式1:params = {'id':1001}
2)方式2:params = {'id': '1001,1002'}
3)方式3:params = {'id':1001,'kw':'北京'}
'''案例::
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:字典或者字符串(推荐使用字典)
响应:
2,响应对象.url # 获取请求URL
3,响应对象.status_code # 获取响应状态码
4,响应对象.text # 以文本形式显示响应内容
'''
# 1,导包
import requests
# 2,调用get
url = 'http://www.baidu.com'
# 不推荐写法,静态
# url = 'http://www.baidu.com?id=1001'
# 案例1:定义字典
# params = {'id':1001}
# 案例1 :字符串形式编写,不推荐
# r = requests.get(url,params = 'id=1001')
# 案例2:
# params = {'id':[1001,1002]} # 不推荐
# params = {'id': '1001,1002'} # 控制台输出的url中%2C是ASCⅡ码值的逗号
# 案例3:
params = {'id':1001,'kw':'北京'} # 多个键值对使用方式,控制台输出中文乱码,因为没有编码。后期可解决
# 请求时带参 params
r = requests.get(url, params=params) # r为响应数据对象response
# 3,获取请求URL地址
print('请求url:', r.url)
# 4,获取响应状态码
print('响应状态码:', r.status_code)
# 5,获取响应信息,文本形式
print('文本响应内容:', r.text)
4.post方法的使用
4.1 基本用法
1,作用:新增资源
2,应用:
- 导包:import requests
- 调用post方法:requests.post()
示例:requests.post(url,json,headers)
3, 参数: - url :新增接口url地址
- json:新增请求报文
- Headers:请求信息头部信息
响应状态:r.status_code
响应信息:r.json() # 以json文本形式响应内容
需求原型:
接口文档信息如下:
接口测试:
# 案例:新增用户
# 参数:
# 1,json:传入json字符串
# 2,headers传入请求头内容
# 响应:
# 1,响应对象.json()
# 2,响应状态码:status.code
# 1,导包
import requests
# 2,调用post
# 请求URL
url = 'https://bus.laayun.cn:1101/auth/pc/user/add'
# 请求headers
# 必要的头部信息:Content-Type(内容类型) 和 Authorization(token)
headers = {'Content-Type': 'application/json',
'Authorization': 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJDQ0MiLCJpYXQiOjE2Mzk2Mzg2Mzh9.fZWP5Cltp9vP9QG1kLvbknLcoeGbKetkrFzgNqocv2jzOSCccOLxoNTOvUabacXapaBL5QrkzVBgho8CiBS7Tw'}
# 请求json
# 传入新增用户必须的字段:账号,组织id,角色id,用户名
# 注意:这个数据的具体格式要根据后端给的接口文档,有的直接就是json格式如下,有的是对象(字典),见下面截图就是data里面有data
data = {
'account': '1136',
'organizationIds': [2],
'roleIds': [18],
'username': '无聊的管理员'
}
r = requests.post(url, json=data, headers=headers)
# 3,获取响应对象
print(r.json())
# 4,获取响应状态码
print(r.status_code)
5. PUT方法的使用
1,作用:更新资源
2,应用:
- 导包:import requests
- 调用put方法:requests.put()
示例:r = requests.put(url,json,headers)
3,参数:(和post方法一样)
url :新增接口url地址
json:新增请求报文
Headers:请求信息头部信息
4,响应:
r.json()
r.status_code
需求原型:
接口文档:
接口测试:
# 案例:修改用户
# 参数:
# 1,json:传入json字符串
# 2,headers传入请求头内容
# 响应:
# 1,响应对象.json()
# 2,响应状态码。status.code
# 1,导包
import requests
# 2,调用post
# 请求URL
url = 'https://buss.lanyun.cn:33680/auth/pc/user/update'
# 请求headers
# 必要的头部信息:Content-Type(内容类型) 和 Authorization(token)
headers = {'Content-Type': 'application/json',
'Authorization': 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJDQ0MiLCJpYXQiOjE2Mzk3MjA5MDB9.2THkWsheSdk-QMEmEGNmDlRoUuC7BvFHKrJecI-8j70brDblH0soaHC_kC3eOPRN7ruj1rhGU3Ke4N7euG0nNA'}
# 请求json
# 传入修改用户时的一个标识字段:通常是id
# 传入需要修改的字段名及内容
# 注意:这个数据的具体格式要根据后端给的接口文档,有的直接就是json格式如下,有的是对象(字典)
data = {
'account': '11363', # 需求中账号不可修改,但是后台要求必须传这个参数,否则会报错
'roleIds': [18],
'username': '可爱的管理员',
'id':293 # 该条数据的标识字段:用户id(数据库中找)
}
r = requests.put(url, json=data, headers=headers)
# 3,获取响应对象
print(r.json())
# 4,获取响应状态码
print(r.status_code)
6,DELETE方法的使用
1,作用:删除资源
2,应用:
导包:import requests
调用方法:delete
3,响应:
响应状态码:.status.code
响应参数:.json()
接口文档:
接口测试:
# 案例:删除用户
# 参数:
# 1,json:传入json字符串 # 当采用post方法时需要
# (当后台定义请求参数为body时,采用的是post方法,需要传入json,若请求参数为query时,在url后面采用“?字段名=值”添加删除信息)
# 2,headers传入请求头内容
# 响应:
# 1,响应对象.json()
# 2,响应状态码:status.code
# 1,导包
import requests
# 2,调用delete
# 请求URL
url = 'https://bus.leayun.cn:33680/auth/pc/user/delete?id=293'
# 请求headers
# 必要的头部信息:Authorization(token)
headers = {'Authorization': 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJDQ0MiLCJpYXQiOjE2Mzk3MjA5MDB9.2THkWsheSdk-QMEmEGNmDlRoUuC7BvFHKrJecI-8j70brDblH0soaHC_kC3eOPRN7ruj1rhGU3Ke4N7euG0nNA'}
# 调用delete方法
r = requests.delete(url,headers=headers)
# 3,获取响应对象
print(r.json())
# 4,获取响应状态码
print(r.status_code)
标签:请求,python,响应,json,url,模块,requests,id
From: https://www.cnblogs.com/leayun/p/17407515.html