Test the complete case

发布于:2025-02-26 ⋅ 阅读:(17) ⋅ 点赞:(0)

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  # 解析结果目录并启动本地报告服务

在这里插入图片描述