当前位置: 首页 > news >正文

接口自动化详细介绍

一、requets库详细介绍

接口的四要素:url、请求方式、请求参数、响应结果。

接口测试的方法:构造参数、发送请求、解析响应、判断数据、接口关联、数据驱动。

1.1、常用的请求方法

1.1.1、get()请求

def get(url, params=None, **kwargs)

url:接口地址。

params:参数。

**kwargs:可变长度的字典。

1.1.2、post请求

def post(url, data=None, json=None, **kwargs)

url:接口地址。

data:参数(表单,x-www-form-urlencoded)。

json:参数(JSON,application/json)。

**kwargs:可变长度的字典。

postman传参与之对应的request()方法的参数

postman传参request参数
form-data(表单、文件)files
x-www-form-urlencoded(表单)data
raw(application/json,传json格式参数)json
binary(application/octrent-stream,二进制文件)data

1.1.3、put请求

def put(url, data=None, **kwargs)

1.1.4、delete()请求

def delete(url, **kwargs)

1.1.5、请求底层逻辑

上面的get()、post()、put()、delete()等四个方法底层都是调用request()方法。

request()方法的底层调用的是session.request()方法。

request()和session.request()的区别:

(1)requests.request():每个请求都是独立的。

(2)requests.session.request():会自动关联每个请求的cookie信息。

1.1.6、requests请求方法分析

安全性:不改变服务器的状态(只读)。

幂等性:单次请求和多次请求,效果一致。

可缓存性:响应结果可供重复使用,省去重复请求。

方法名安全性幂等性可缓存性应用场景
GET获取数据,下载资源
HEAD与GET相同,但是没有正文
POST×××提交数据,创建资源
PUT××修改数据,覆盖资源
PATCH××部分修改数据
DELETE××删除数据、删除资源
CONNECT×××创建代理隧道
OPTIONS×显示通信选项

1.1.7、post和get关于安全的定义

为什么在接口自动化里面post不安全、get安全,但是在http请求中post安全、get不安全?

核心结论是:两者的“安全”定义完全不同,
(1)接口自动化中的“安全”是业务层面无副作用;
(2)HTTP协议中的“安全”是数据传输层面隐蔽性;
所以才会出现看似矛盾的判断。

HTTP 协议:POST 比 GET 相对安全的原因

GET请求:参数直接拼接在URL中(如 xxx.com/login?user=123&pwd=456)
会被浏览器历史、服务器日志、代理服务器完整记录,敏感数据(密码、token)极易泄露,所以说 “不安全”。

POST请求:参数放在请求体(Body)中,URL 中看不到
虽然未加密时仍能被抓包获取,但不会被常规日志记录,泄露风险更低,所以说“相对安全”。

场景“安全”的定义GETPOST
HTTP协议数据传输是否隐蔽、防泄露不安全(参数在 URL)相对安全(参数在 Body)
接口自动化业务层面无副作用、可重复执行安全(仅查询,无修改)不安全(修改数据,有副作用)

1.2、request()方法参数介绍

def request(self, method, url, params=None, data=None, headers=None, cookies=None, files=None, auth=None, timeout=None, allow_redirects=True, proxies=None, hooks=None, stream=None, verify=None, cert=None, json=None)
request()参数对应HTTP请求部分介绍
method请求方式
url请求行请求路径
params=None请求行GET 请求传参
传递 URL 查询参数(问号后)
字典、列表、元组(如{"id":1,"page":2})
data=None请求体传递请求体数据
表单提交(Content-Type: application/x-www-form-urlencoded)
非 JSON 格式(如 XML、文本)
headers=None请求头传递请求头信息

放置公共参数

设置 token、Content-Type、用户代理(User-Agent)等

cookies=None请求头传递cookies信息
files=None请求体文件上传
auth=None鉴权
timeout=None设置请求超时时间
allow_redirects=True重定向
proxies=None设置代理
hooks=None钩子
stream=None文件下载
cert=NoneCA证书
json=None请求体传递 JSON 格式请求体

JSON 格式接口(Content-Type: application/json)

如创建订单、提交复杂数据

1.3、requests响应部分

res = requests.post(url, data=None, json=None, **kwargs)
属性介绍
res.text返回字符串形式的结果
res.json()返回字典形式的结果
res.content()返回字节类型的结果
res.status_code返回状态码
res.resaon返回状态信息
res.cookie返回cookie信息
res.encoding返回编码格式
res.headers返回响应头

二、提取变量的方式

2.1、jsonpath提取

2.1.1、使用方式

jsonpath.jsonpath(obj, expr)
# obj传入json表达式,expr传入jsonpath表达式规则

2.1.2、匹配条件

符号介绍
$表示根节点,也是所有jsonpath表达式的开始
.表示获取子节点
..表示获取所有符合条件的内容
*代表所有的元素节点
[ ]表示迭代器的标识(可以以用于处理下标等情况)
[, ,]表示多个结果的选择
?()表示过滤操作
@表示当前结点

2.1.3、案例

res:是返回请求的参数。

$..token:是jsonpath表达式,目的是查询所有key等于token的value值。

2.2、正则表达式提取

这篇文章介绍了正则表达式,可以前去观看:

正则表达式详细介绍

三、实现接口关联

3.1、通过中间变量保存

定义一个类变量,通过jsonpath或正则表达式提取关键信息,然后保存到类变量中。

3.2、通过文件的形式保存

通过jsonpath或正则表达式提取关键信息,然后保存到yaml或excel中。

还没写完,会继续更新.......

http://www.dtcms.com/a/585818.html

相关文章:

  • 深入解析多态:面向对象编程灵魂
  • 基于开源链动2+1模式AI智能名片S2B2C商城小程序的赛道力构建与品牌发展研究
  • 怎么做网站地图的样式wordpress网站后缀
  • 【报错解决】java:无效的目标发行版:17;源发行版17需要目标发行版17
  • C/C++输入输出初级(一) (算法竞赛)
  • java list<string> to string[] 怎么转换
  • 【Javaweb学习|黑马笔记|Day4】Web后端基础
  • 做智能网站系统重庆企业
  • Vue 项目实战《尚医通》,首页静态搭建 banner,笔记07
  • 构建AI智能体:八十八、大模型编辑:从一本百科全书到可修订的活页本
  • 2025.11.07 力扣每日一题
  • 网站建设 技术协议wordpress 文本框
  • pcl 构造线、平面、圆、球、圆柱体、长方体、圆锥体点云数据
  • m 的手机网站怎么做小俊哥网站建设
  • 电科金仓KingbaseES数据库全面语法解析与应用实践
  • 化妆品网站建设经济可行性分析好看的设计网站
  • 工程门户网站建设新桥做网站
  • 【开题答辩过程】以《割草机器人工作管理系统的设计与开发》为例,不会开题答辩的可以进来看看
  • 线束之插头导航器显示连接物功能文本
  • JVM(一)----- 类加载过程
  • 猎聘网网站谁做的东莞网页网站制作
  • Spring 6.x HTTP interface 使用说明
  • 庙行镇seo推广网站江西移动网站
  • C++ 图片加背景音乐的处理
  • 进度条+ 基础开发工具----版本控制器git 调试器gdb/cgdb
  • 我在高职教STM32(新11)——LCD1602显示效果控制
  • 将 AI 注入终端:Gemini CLI 保姆级安装与实战指南
  • 珠海市住房城乡建设局网站衡阳网站建设公司哪家好
  • leetcode 345. 反转字符串中的元音字母 python
  • 创建一个网站 站点根文件夹为wordpress互动