基于”python+requests模块“接口自动化的基本方法使用

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)

posted @ 2023-05-17 09:12  leayun  阅读(241)  评论(0编辑  收藏  举报