首页 > 其他分享 >接口自动化框架两大神器-正则提取器和Jsonpath提取器

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

时间:2023-01-30 14:22:11浏览次数:44  
标签:提取 name res 接口 正则 Jsonpath 节点 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提取器 

特点: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
*

通配符。如

$.*:匹配到根节点下所有节点的值

$..*:递归匹配到根节点下所有的对象

 

标签:提取,name,res,接口,正则,Jsonpath,节点,jsonpath
From: https://www.cnblogs.com/daminghuahua/p/17073567.html

相关文章

  • 如何从json数据中提取数据
        //将数据解析成json格式var data=JSON.parse(responseBody);//获取id值var procInstId=data.data.id; var workId=data.data.works[0].id;pm.envir......
  • 从路由器真机提取固件包(一)
    前言看​​IOT​​也有一段时间了,但是一直都是从官网获取固件包,没有尝试过从真机里提取固件。在看了一些师傅的文章后决定尝试一下从真机中提取固件。正好手里也有几个路由......
  • 正则表达式(爬虫)
    Pattern表示正则表达式matcher:文本匹配器,作用按照正则表达式的规则去读取字符串,重头开始读取,在大串中去寻找字串案例:Strings="java带安抚阿富汗发货爱的哈佛......
  • linux 中awk命令从fasta文件中提取指定的scaffold数据
     awk实现001、awk实现,提取第一个scaffold[root@PC1test]#lsa.fa[root@PC1test]#cata.fa##测试数据>chr1aattccgg>chr2ttccggaaggccttg......
  • 使用 JavaScript 从字符串中提取数字
    在JavaScript中,有多种方法可以从字符串中提取数字。一种方法是使用 match() 方法和正则表达式来搜索字符串中的所有数字。另一种方法是使用 replace() 方法和正则表达式从......
  • c# 提取注释即summary
    1、需要在项目属性中开启生成xml启动项2、添加辅助类XmlCommentHelper///<summary>///注释辅助类///</summary>publicclassXmlCommentHelper......
  • 正则表达式练习(安装快捷插件any-rule,使用时右键打开)
    正则表达式心得:拿到正确的数据,从左到右依次书写正则表达式中():表示分组,|:表示或者  如果出现或者,一定要加上小括号表示分组  验证邮箱   简单验证身份证: ......
  • vscode 利用正则 搜索标签 tags (?=.*关键字1)(?=.*关键字2).*
    vscode利用正则搜索标签(?=.关键字1)(?=.关键字2).*这里关键词是可以多个并且不按照顺序搜索的,就是写起来需要(?=.关键字)最后.结尾我是不是需要制作一个转换的小......
  • JavaScript学习笔记—正则表达式
    用来定义一个规则通过这个规则计算机可以检查一个字符串是否符合规则或者将字符串中符合规则的内容提取出来也是JS中的一个对象,所以要使用正则表达式,需要先创建正则表达......
  • 左正则代数模的不可约直和分解的讨论证明
    丘老师的精彩讲解: 有限性代数的不可约左模(十六)_哔哩哔哩_bilibili  有限性代数的不可约左模(十七)_哔哩哔哩_bilibili这个内容主要看丘维声的《群表示论》2.2节,主定理的......