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

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

在这里插入图片描述

相关文章:

  • 新一代MPP数据库:StarRocks
  • 智能网络感知,打造极致流畅的鸿蒙原生版中国移动云盘图文体验
  • 设计模式学习笔记
  • 2025年股指期货和股指期权合约交割的通知!
  • MQTT的连接配置以及重连机制和遇到的问题--------求如何修改更加好
  • Flask flash() 消息示例
  • Python大数据可视化:基于Python的王者荣耀战队的数据分析系统设计与实现_flask+hadoop+spider
  • 数据分析和数据挖掘的工作内容
  • ollama 学习笔记
  • 亚马逊企业购大客户业务拓展经理张越:跨境电商已然成为全球零售电商领域中熠熠生辉的强劲增长点
  • 本地安装 Grafana Loki
  • HTTP SSE 实现
  • RabbitMq 基础
  • 贪心算法
  • 前端面试真题 2025最新版
  • ecovadis社会企业责任认证
  • C++面试笔记(持续更新...)
  • Transformer解析——(四)Decoder
  • Modbus协议基础
  • AWS云从业者认证题库 AWS Cloud Practitioner(2.21)
  • 2024年重大新闻摘抄/六年级下册数学优化设计答案
  • 黄骗免费网站/买链接网站
  • 网站横幅js代码/怎么开个人网站
  • 武汉做网站价格/重要新闻今天8条新闻
  • 国内坚持做正品的网站/特色产品推广方案
  • 怎样说服企业做网站建设推广/郑州网站建设最便宜