“动动小手,点点关注呗~”
在接口自动化测试领域,高效准确地从接口响应中提取数据对于后续的测试流程至关重要。
正则表达式提取器和 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 提取器都有着广泛的应用场景。根据接口返回数据的格式和我们的提取需求,合理选择并运用这两种工具,能够大大提高我们的测试效率和准确性,为软件质量的保障提供有力支持。希望通过本文的介绍和示例,能让读者更好地掌握这两种提取器在接口自动化测试中的应用技巧。
领取专属 10元无门槛券
私享最新 技术干货