当前位置: 首页 > article >正文

Test the complete case

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

在这里插入图片描述


http://www.kler.cn/a/556407.html

相关文章:

  • 区块链中的递归长度前缀(RLP)序列化详解
  • 黑马点评_登录模块
  • 雷军推荐:WPS 与 Pastemate 联用,效率飞升新高度
  • 线段树【C语言】【C++】
  • pycharm 调试 debug 进入 remote_sources
  • 【Vue3 项目中父子组件之间如何互相传值、传递方法】
  • uni-app(位置1)
  • 深蕾科技智能多媒体SoC产品助力“DataEye剧查查之夜”微短剧盛会
  • Spring Boot (maven)分页4.0.1版本 专业版- 改
  • 如何连接别人的redis服务器吗?
  • 同ip访问不同网页的效果
  • 【推荐项目】009-学校宿舍管理系统
  • 【PyTorch 深度学习常用 Linux 指令总结】
  • ubuntu docker 安装 deepseek anythingllm/openwebui教程
  • npm包无法识别命令
  • 亚马逊AI图像模型Nova深度体验(含源代码)(上)
  • 深度测评 | AI引领安全运营提升用户使用感受及分析处置能力
  • Docker小雅Emby全家桶配置夸克网盘Cookie教程
  • Django Admin: 实现基于数据库实际值的动态过滤器
  • 微信小程序消息推送解密