首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

软件测试笔记|接口自动化测试|正则提取器与JsonPath提取器的应用

“动动小手,点点关注呗~”

在接口自动化测试领域,高效准确地从接口响应中提取数据对于后续的测试流程至关重要。

正则表达式提取器和 JsonPath 提取器作为两种常用且强大的工具,能够帮助我们在复杂的接口数据中迅速定位并获取所需信息。

本文将详细介绍这两种提取器在接口自动化测试中的应用,并通过代码示例展示其实际使用场景

一、正则表达式提取器

(一)正则表达式基础

正则表达式是一种用于描述字符串模式的强大工具,它由普通字符(如字母、数字)和特殊字符(元字符)组成。通过组合这些字符,我们可以构建出能够匹配特定文本模式的表达式。

例如,\d代表数字,\w代表字母、数字或下划线,.代表任意字符(除换行符),*表示前面的字符可以出现零次或多次,+表示前面的字符至少出现一次等。

(二)接口自动化测试中的应用场景及代码示例

1. 提取登录接口的 Token

在许多应用中,登录接口成功后会返回一个 Token,用于后续接口请求的身份验证。假设登录接口返回的数据格式如下:

{"code":200,"message":"登录成功","data":{"token":"abcdefg12345"}}

我们可以使用正则表达式"token":"(\w+)"来提取 Token 的值。以下是使用 Python 语言和re模块实现的代码:

import requestsimport re# 发送登录请求response = requests.post('http://your_login_api_url', json={'username': 'your_username', 'password': 'your_password'})# 使用正则表达式提取Tokentoken_match = re.search('"token":"(\w+)"', response.text)if token_match:   token = token_match.group(1)   print(f"提取到的Token: {token}")

2. 从文本中提取特定格式的数据(如邮箱地址)

如果接口返回的文本中包含多个邮箱地址,我们可以使用正则表达式来提取它们。邮箱地址的正则表达式模式较为复杂,一般可以使用[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+。

假设接口返回的数据中有一段包含邮箱地址的文本:

用户信息:姓名为张三,邮箱为zhangsan@example.com,联系电话为1234567890。还有一个邮箱lisi@example.com。。

以下是提取邮箱地址的代码:

import retext = "用户信息:姓名为张三,邮箱为zhangsan@example.com,联系电话为1234567890。还有一个邮箱lisi@example.com。"email_pattern = '[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+'emails = re.findall(email_pattern, text)for email in emails:   print(f"提取到的邮箱: {email}")

二、JsonPath 提取器

(一)JsonPath 基础

JsonPath 是一种用于从 JSON 数据中提取特定数据的查询语言,它类似于 XPath 在 XML 中的作用。通过使用 JsonPath 表达式,我们可以方便地定位到 JSON 数据中的节点或属性。

(二)接口自动化测试中的应用场景及代码示例

1. 提取嵌套 JSON 结构中的数据

假设我们有一个获取用户详细信息的接口,返回的数据格式如下:

{   "user": {       "id": 123,       "name": "李四",       "address": {           "city": "北京",           "street": "王府井大街123号"       }   }}

如果我们想要提取用户的城市信息,可以使用 JsonPath 表达式$.user.address.city。以下是使用 Python 的jsonpath_ng库实现的代码:2. 提取数组中的特定元素

如果接口返回的数据是一个包含多个对象的数组,例如获取多个商品的信息:

{   "products": [       {           "id": 1,           "name": "商品1",           "price": 10.0       },       {           "id": 2,           "name": "商品2",           "price": 20.0       }   ]}

我们想要提取所有商品的价格,可以使用 JsonPath 表达式$.products[*].price。代码如下:在接口自动化测试中,正则表达式提取器和 JsonPath 提取器都有着广泛的应用场景。根据接口返回数据的格式和我们的提取需求,合理选择并运用这两种工具,能够大大提高我们的测试效率和准确性,为软件质量的保障提供有力支持。希望通过本文的介绍和示例,能让读者更好地掌握这两种提取器在接口自动化测试中的应用技巧。

  • 发表于:
  • 原文链接https://page.om.qq.com/page/OpVyr4akiP9jfbB7qCYxCYlw0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券