首页 > 编程语言 >基于”python+requests模块“接口自动化的基本方法使用

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

时间:2023-05-17 09:25:35浏览次数:42  
标签:请求 python 响应 json url 模块 requests id

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

相关文章

  • python中提供正则支持的re模块
    1re模块的作用个人觉得就是按照给定的条件,在文本中去寻找匹配对应的字符re模块十分强大,提供的正则规则也非常多,网上有很多辅助和测试工具,现在有ai就更加方便了,不过一些基础的使用最好还是了解下2正则表达式个人理解,正则表达式就是寻找、匹配的规则或者条件,它是一个字符串的......
  • Python学习之十三_pip的学习
    Python学习之十三_pip的学习pip的含义pip:pipisthepackageinstallerforPython.YoucanusepiptoinstallpackagesfromthePythonPackageIndexandotherindexes.pip其实就是python的包管理器:PackagesInstallforPython他可以在线安装也可以离线安装......
  • Python: 结合多进程和 Asyncio 以提高性能
    动动发财的小手,点个赞吧!简介多亏了GIL,使用多个线程来执行CPU密集型任务从来都不是一种选择。随着多核CPU的普及,Python提供了一种多处理解决方案来执行CPU密集型任务。但是直到现在,直接使用多进程相关的API还是存在一些问题。在本文开始之前,我们还有一小段代码来帮助演......
  • Fast-GRPC: 用python轻松开发grpc接口
    简介Fast-GRPC旨在帮助开发者更加轻松快捷地使用Python开发gRPC接口。它的特点包括简化步骤、简单上手、快速开发,同时支持异步和同步代码,以及支持Middleware,灵感来自FastAPI。安装需要python3.7+pipinstallpython-fast-grpc快速上手下面是一个简单的Fast-GRPC示......
  • python字符串的45个内置方法
    1.字符串拼接和查找: 2.字符串分割替换和大小写操作: 3.字符串判断内容: 4.字符串剩下操作: ......
  • python学生管理系统笔记(+增删改查,但不存入数据库或文件中)
    原本的基础上+增删改查,但不存入数据库或文件中,就是数据只在一次运行的页面中进行增删改查,但是重新运行不会有之前的数据,因为没有更新到json或者数据库中。1.LoginPage.pyimporttkinterastkfromtkinterimportmessageboxfromdbimportdbfromMainPageimportMainPage......
  • REQUESTS 报的基本用法
    importrequestsurl='https://www.baidu.com/'res=requests.get(url)res.encoding='utf-8'#指定编码格式,默认为'utf-8' print(res)print(res.content)#b'二进制的文本流print(res.content.decode('utf-8'))#这是获取到的文本流的编码格式......
  • Python 运算符
    1、算术运算符运算符描述实例+加-两个对象相加a+b输出结果30-减-得到负数或是一个数减去另一个数a-b输出结果-10*乘-两个数相乘或是返回一个被重复若干次的字符串a*b输出结果200/除-x除以yb/a输出结果2%取模-返回除法的余数......
  • python day 04
    字符串(str)作用:用来记录人的名字、家庭住址、性别等描述性质的状态定义字符串:方式1: name='kevin'#用的多方式2 name="kevin"#用的多方式3: name='''kevin'''(当三引号左边有赋值符号和变量名的时候,它是字符串,否则为注释)方式4: name=......
  • 掌握Python开发三部曲
    最近不少人在公众号后台或是微信直接问我Python开发需要掌握哪些或是问有木有书推荐或是问能不能给点电子书这年头最便宜的投资就是买、买、买书不管什么时候最好的提升就看书、看书、看书对于没有Python基础的,建议你买本《Python基础教程》成体系的把Python3所有基础均有涉及,你需......