浙江网站建设电话新人跑业务怎么找客户
Test the complete case
python写的一段 由pytest测试框架/allure报告框架/parameters数据驱动组成的完整案例代码
目录结构
project/
├── test_cases/
│ ├── __init__.py
│ └── test_math_operations.py # 测试用例
├── test_data/
│ └── math_data.json # 测试数据
└── pytest.ini # pytest配置文件
1. 安装依赖
pip install pytest allure-pytest
2. 测试数据 (test_data/math_data.json)
[{"a": 2,"b": 3,"expected": 5},{"a": -1,"b": 1,"expected": 0},{"a": 100,"b": 200,"expected": 300}
]
3. 测试用例 (test_cases/test_math_operations.py)
# 导入所需模块
import json # 用于处理JSON格式的测试数据
import pytest # pytest测试框架
import allure # Allure报告框架# ---------------------- 数据加载函数 ----------------------
def load_test_data():"""从JSON文件加载测试数据"""# 使用相对路径读取上级目录中的测试数据文件with open("../test_data/math_data.json", "r") as f:# E:\pythonXM\test\Test the complete case\project01> 此目录下运行;./表示在当前目录下运行# ../表示在当前目录上一级下运行return json.load(f) # 返回解析后的JSON数据(列表格式)# ---------------------- 被测函数 ----------------------
def add_numbers(a, b):"""实现两数相加的功能(被测目标函数)"""return a + b # 返回两个输入参数的和# ---------------------- 测试类 ----------------------
@allure.feature("数学运算测试") # Allure报告中的一级分类
class TestMathOperations:@allure.story("整数加法测试") # Allure报告中的二级分类@allure.severity(allure.severity_level.CRITICAL) # 定义测试用例的重要级别@pytest.mark.parametrize("data", load_test_data()) # 参数化:从JSON文件动态获取测试数据def test_addition(self, data):"""参数化加法测试用例"""# 从单条测试数据中提取参数a = data["a"] # 获取第一个加数b = data["b"] # 获取第二个加数expected = data["expected"] # 获取预期结果# 在Allure报告中添加操作步骤说明with allure.step(f"测试加法:{a} + {b} = {expected}"):# 调用被测函数获取实际结果result = add_numbers(a, b)# 断言验证实际结果与预期一致assert result == expected, \f"断言失败:{a} + {b} 应等于 {expected},实际得到 {result}" # 断言失败时的提示信息# 将测试数据附加到Allure报告中(作为JSON附件)allure.attach(json.dumps(data, indent=2), # 格式化JSON数据"测试数据", # 附件名称allure.attachment_type.JSON # 附件类型)# ---------------------- 失败案例示例 ----------------------
@pytest.mark.parametrize("x,y", [(1, 1), (2, 3)]) # 直接参数化测试数据
def test_failed_case(x, y):"""故意失败的测试用例(演示失败场景)"""assert x == y, f"{x} 不等于 {y}" # 故意设计会失败的断言
4. pytest配置 (pytest.ini)
[pytest]
addopts = -v -s --alluredir=./allure-results # 自动添加的命令行参数:# -v:详细输出# -s:打印输出信息# --alluredir:指定Allure结果保存目录
testpaths = test_cases # 指定测试目录
python_files = test_*.py # 匹配测试文件模式
5. 运行测试
# 运行测试并生成Allure原始数据
pytest # 默认会读取pytest.ini中的配置# 生成HTML报告(需要已安装Allure命令行工具)
allure serve ./allure-results # 解析结果目录并启动本地报告服务