接口自动化框架两大神器-正则提取器和Jsonpath提取器
一 接口自动化框架
一 框架结构

二 结构说明
- API 用于封装被测系统的接口(用request模块封装的请求方法)
- TestCase 将一个或多个接口封装成测试用例,并使用UnitTest管理测试用例 TestCase可以
- 为了方便维护测试数据,可以把测试脚本和测试数据分离开
- 通过UnitTest断言接口返回的数据,并生成测试报告
三 接口自动化
简单示例
import re, jsonpath, pytest, requests class TestApi:
def test_01_api(self):
res = requests.get(url="http://127.0.0.1:8000/api")
print(f"res={res.text}")
# 正则表达式提取
result = re.search('"user":"(.*?)"', res.text)
print(f"result={result}") def test_02_api(self):
res = requests.get(url="http://127.0.0.1:8000/api")
# 通过jsonpath取值
value = jsonpath.jsonpath(res.json(), "$.data[0].goods[0].price")
print(f"value={value}") if __name__ == '__main__':
pytest.main(['-s']) #-s 显示测试执行的输出信息
接口自动化问题:
1 统一请求问题
2 断言
3 接口关联:用到re提取器和jsonpath提取器
4 动态参数
5 csv数据驱动
6 日志监控
7 异常处理
8 基础路径设置
二 正则表达式提取器
同postman,jmeter的正则表达式提取器和json提取器
特点:可以处理所有类型的返回数据。
| (.+?) | 匹配任意一个字符1-N次 |
| (.*?) | 匹配任意一个字符0-N次 |
三 jsonpath提取器
可以在http://jsonpath.com/站点进行验证JsonPath的执行效果。

特点:jsonpath只能提取json格式的数据。
json是一种轻量级的数据格式。由两种数据组成:
- 对象:由大括号括起来的用逗号分隔的成员,成员由键值对组成。如{"name":"jj","age":"16"}
- 数组:由中括号括起来的一组值。如["A","B"]
语法格式:
| $ | 根节点 |
| .或[] |
获取子节点的对象。如$.name,$.["name"] 区别:[]可以同时取多个节点,如$["name","age"] 数组可以通过[]处理 $.data[0].goods[0].price #0表示取数组第一个值 $.data[1:] #下标从1开始到最后[切片取值] ️ 两种情况用[]: 1 数组取值 2 取子节点 |
| .. | 相对路径取值,递归取值。适用值唯一。如$..name |
| * |
通配符。如 $.*:匹配到根节点下所有节点的值 $..*:递归匹配到根节点下所有的对象 |
接口自动化框架两大神器-正则提取器和Jsonpath提取器的更多相关文章
- 转载:python + requests实现的接口自动化框架详细教程
转自https://my.oschina.net/u/3041656/blog/820023 摘要: python + requests实现的接口自动化框架详细教程 前段时间由于公司测试方向的转型,由 ...
- python + requests实现的接口自动化框架详细教程
前段时间由于公司测试方向的转型,由原来的web页面功能测试转变成接口测试,之前大多都是手工进行,利用postman和jmeter进行的接口测试,后来,组内有人讲原先web自动化的测试框架移驾成接口的自 ...
- python3+request接口自动化框架
首次书写博客,记录下写的自动化接口框架,框架比较简单,哈哈哈,算是记录下历程把!~~~ 一.本次框架由python3.6 书写 1.准备代码环境,下载python3.6 下载地址:https:/ ...
- 接口自动化框架2-升级版(Pytest+request+Allure)
前言: 接口自动化是指模拟程序接口层面的自动化,由于接口不易变更,维护成本更小,所以深受各大公司的喜爱. 第一版入口:接口自动化框架(Pytest+request+Allure) 本次版本做了一些升级 ...
- Jmeter+ant+Jenkins接口自动化框架搭建
摘自:https://testerhome.com/topics/13389 一.背景 上一篇讲了Jmeter 接口自动化-脚本数据分离实例,我们知道怎么利用Jmeter去编写接口自动化脚本,但是接 ...
- Jmeter+Ant+Jenkins接口自动化框架
最近应公司要求,搭建一套接口自动化环境.看到通知邮件,没有多想就确定了Jmeter路线.可能有些人会 说,为啥不用python,相对而言高大上一些.因为公司内部现在项目有用到Jmeter,正好可以结合 ...
- 接口自动化框架(Pytest+request+Allure)
前言: 接口自动化是指模拟程序接口层面的自动化,由于接口不易变更,维护成本更小,所以深受各大公司的喜爱. 接口自动化包含2个部分,功能性的接口自动化测试和并发接口自动化测试. 本次文章着重介绍第一种, ...
- [转载]为何 Emacs 和 Vim 被称为两大神器
Emacs 是神的编辑器,而 Vim 是编辑器之神.二者为何会有如此美誉,且听本文向你一一道来. 目 录 0. 序章:神器的传说 1. 无敌的可扩展性 1.1 可扩展性给了软件强大的生命 1.2 Em ...
- Python+Pytest+Allure+Git+Jenkins接口自动化框架
Python+Pytest+Allure+Git+Jenkins接口自动化框架 一.接口基础 接口测试是对系统和组件之间的接口进行测试,主要是效验数据的交换,传递和控制管理过程,以及相互逻辑依赖关系. ...
- python+request接口自动化框架
python+request接口自动化框架搭建 1.数据准备2.用python获取Excel文件中测试用例数据3.通过requests测试接口4.根据接口返回的code值和Excel对比 但本章只讲整 ...
随机推荐
- Oracle 临时表空间暴满的原因与解决方法
Oracle临时表空间主要用来做查询和存放一些缓冲区数据.临时表空间消耗的主要原因是需要对查询的中间结果进行排序. 重启数据库可以释放临时表空间,如果不能重启实例,而一直保持问题sql语句的执行,te ...
- Python切换中英文输入法
要实现中英文切换,首先Windows系统必须要有中文语言和英文语言,才能实现输入法(语言)切换. import win32api import win32gui from win32con impor ...
- codeforces思维题
1.Slime Escape 次数:0 2.Meeting on the Line 题解 次数:0 3.Ugu 自己完成了线段树解法,另一种解法未完成
- react 学习笔记更新2.0
1.性能优化 1.shouldComponentUpdate 在render调用之前会调用shouldComponentUpdate,不建议在 shouldComponentUpdate() 中进行深 ...
- 053_Salesforce Lightning与Classic对比
Classic页面 Lightning页面 特点: 应用程序的切换更加方便 可以快速访问最近项目和备注等 新的记录页面布局 涡轮增压列表视图 仪表板有所变化 圆滑的报告视图 其中最重要的变化也当属 ...
- vagrant用密码连接ssh
1通过 ssh address连接 1:进去linux 2:修改配置文件信息 vi /etc/ssh/sshd_config 修改 passwordAuthentication no 改为 passw ...
- HCIA-ICT实战基础09-远程接入安全管理
HCIA-ICT实战基础-远程接入安全管理 目录 AAA概述 AAA配置实现 telnet原理与配置 Stelnet(华为ssh的另一种称呼)配置 1 AAA概述 1.1 基本概念 AAA是Authe ...
- STM32cubemx-HAL库串口断线问题
STM32cubemx:version5.1 Chip: STM32F446RE IDE:Keil5 Q:小项目上写了个简单的通信包,波特率230400,数据量较大1600Byte/s,DMA的方式实 ...
- source Insight 的常用设置
1. 去除^M 的显示 "Options->Preferences->Files", 设置"Default File Format" to &quo ...
- 解决:pytesseract.pytesseract.TesseractNotFoundError: tesseract is not installed or it‘s not in your PATH. See README file for more information.
问题:使用pytesseract库识别图片中文字时出现报错 代码: import pytesseract from PIL import Image,ImageEnhance img=Image.op ...
