📝 面试求职: 「面试试题小程序」 ,内容涵盖 测试基础、Linux操作系统、MySQL数据库、Web功能测试、接口测试、APPium移动端测试、Python知识、Selenium自动化测试相关、性能测试、性能测试、计算机网络知识、Jmeter、HR面试,命中率杠杠的。(大家刷起来…)
📝 职场经验干货:
在接口自动化测试中,数据类型处理是确保接口返回数据正确性和一致性的重要环节。接口返回的数据可能包含多种类型,如字符串、数字、布尔值、列表和字典等。正确处理这些数据类型不仅可以提高测试的准确性,还能增强测试代码的健壮性。本文将详细介绍如何在接口自动化框架中封装和处理各种数据类型,包括常见的数据类型转换、验证和断言。
一、数据类型处理的目标
数据类型转换:将接口返回的数据转换为所需的格式。
数据类型验证:验证接口返回的数据类型是否符合预期。
数据类型断言:在测试用例中对数据类型进行断言,确保数据的正确性。
二、封装数据类型处理工具
为了实现数据类型处理,可以封装一个工具类,提供通用的数据类型转换、验证和断言方法。
(一)安装依赖库
首先,需要安装 jsonschema 库,用于验证 JSON 数据的结构和类型。
pip install jsonschema
(二)封装数据类型处理类
创建一个 data_handler.py 文件,封装数据类型处理工具。
import json
import jsonschema
from jsonschema import validate
class DataHandler:
@staticmethod
def convert_to_json(data):
"""
将数据转换为 JSON 格式。
:param data: 要转换的数据
:return: JSON 格式的数据
"""
try:
return json.loads(data)
except json.JSONDecodeError as e:
raise ValueError(f"数据转换为 JSON 格式失败:{e}")
@staticmethod
def validate_json(data, schema):
"""
验证 JSON 数据是否符合指定的 schema。
:param data: 要验证的 JSON 数据
:param schema: JSON Schema
:raises: jsonschema.exceptions.ValidationError
"""
validate(instance=data, schema=schema)
@staticmethod
def assert_data_type(data, expected_type):
"""
验证数据类型是否符合预期。
:param data: 要验证的数据
:param expected_type: 预期的数据类型
:raises: AssertionError
"""
assert isinstance(data, expected_type), f"数据类型不匹配。预期:{expected_type},实际:{type(data)}"
@staticmethod
def assert_data_value(data, expected_value):
"""
验证数据值是否符合预期。
:param data: 要验证的数据
:param expected_value: 预期的数据值
:raises: AssertionError
"""
assert data == expected_value, f"数据值不匹配。预期:{expected_value},实际:{data}"
三、定义 JSON Schema
JSON Schema 是一种用于描述 JSON 数据结构的规范。通过定义 JSON Schema,可以清晰地描述 JSON 数据的结构、字段类型和约束条件。
(一)示例 JSON Schema
假设我们有一个用户信息的 JSON 数据结构,包含以下字段:
id(整数)
name(字符串)
email(字符串)
is_active(布尔值)
对应的 JSON Schema 如下:
{
"type": "object",
"properties": {
"id": {"type": "integer"},
"name": {"type": "string"},
"email": {"type": "string"},
"is_active": {"type": "boolean"}
},
"required": ["id", "name", "email", "is_active"]
}
四、封装测试用例
在 Pytest 中,可以使用封装的数据类型处理工具来编写测试用例。
(一)创建测试用例文件 test_user_info.py
import pytest
import requests
from data_handler import DataHandler
# 定义 JSON Schema
user_info_schema = {
"type": "object",
"properties": {
"id": {"type": "integer"},
"name": {"type": "string"},
"email": {"type": "string"},
"is_active": {"type": "boolean"}
},
"required": ["id", "name", "email", "is_active"]
}
def test_get_user_info():
url = "https://api.example.com/users/123"
response = requests.get(url)
assert response.status_code == 200
# 将响应数据转换为 JSON 格式
data = DataHandler.convert_to_json(response.text)
# 验证 JSON 数据格式
DataHandler.validate_json(data, user_info_schema)
# 验证字段类型
DataHandler.assert_data_type(data["id"], int)
DataHandler.assert_data_type(data["name"], str)
DataHandler.assert_data_type(data["email"], str)
DataHandler.assert_data_type(data["is_active"], bool)
# 验证字段值
DataHandler.assert_data_value(data["name"], "John Doe")
DataHandler.assert_data_value(data["email"], "john.doe@example.com")
五、执行测试用例
完成测试用例的编写后,可以通过 Pytest 执行测试用例。
(一)运行测试用例
在终端中,进入到测试用例文件所在目录,执行以下命令:
pytest test_user_info.py
(二)查看测试结果
如果所有断言都通过,表示数据类型处理和验证成功。如果有任何一个断言失败,说明数据类型或值存在问题,需要进行调试和修复。
六、总结
通过封装数据类型处理工具和定义 JSON Schema,可以实现高效、准确的数据类型处理和验证。在 Pytest 中,结合封装的工具类和 JSON Schema,可以编写出结构清晰、易于维护的测试用例。希望本文能够对读者在接口自动化框架中实现数据类型处理提供帮助。
最后: 下方这份完整的软件测试视频教程已经整理上传完成,需要的朋友们可以自行领取【保证100%免费】