You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用pytest-describe插件组织pytest测试用例?求嵌套块示例

使用pytest-describe组织嵌套测试用例的示例

1. 先安装插件

pip install pytest-describe

2. 编写嵌套结构的测试代码

创建一个测试文件(比如test_nested_calculator.py),下面是支持任意嵌套的示例:

from pytest import describe, it, context

# 用类组织顶层测试组
@describe("计算器类")
class TestCalculator:
    @describe("加法功能")
    def test_addition(self):
        calculator = Calculator()

        @context("输入两个正数")
        def _():
            @it("返回正确的和")
            def _():
                assert calculator.add(2, 3) == 5

            @it("结果大于任意输入数")
            def _():
                result = calculator.add(4, 5)
                assert result > 4
                assert result > 5

        @context("输入包含负数")
        def _():
            @it("正确计算正负相加结果")
            def _():
                assert calculator.add(-1, 3) == 2
                assert calculator.add(5, -2) == 3

            # 多层嵌套示例
            @describe("多负数相加场景")
            def __():
                @it("正确返回负数和")
                def _():
                    assert calculator.add(-3, -4) == -7

# 用函数组织独立测试组
@describe("独立测试集合")
def test_standalone_group():
    @it("基础断言测试")
    def _():
        assert 1 + 1 == 2

    @context("复杂验证场景")
    def _():
        @describe("深层嵌套测试")
        def __():
            @it("多层嵌套仍能被识别执行")
            def _():
                assert len("pytest-describe") == 14

# 测试用的辅助类
class Calculator:
    def add(self, a, b):
        return a + b

3. 运行测试

在终端执行命令:

pytest test_nested_calculator.py -v

关键说明

  • @describe:用来定义测试分组,可装饰类或函数,把相关测试用例归类
  • @context:是@describe的别名,更适合描述测试场景的上下文条件
  • @it:标记具体的测试用例,每个被@it装饰的函数都会被pytest作为独立测试项执行
  • 支持任意层级的嵌套,不管是类内还是函数内的嵌套结构,pytest都能正确识别并执行

运行输出示例

collected 7 items

test_nested_calculator.py::TestCalculator::test_addition::_::_ PASSED
test_nested_calculator.py::TestCalculator::test_addition::_::_ PASSED
test_nested_calculator.py::TestCalculator::test_addition::_::_ PASSED
test_nested_calculator.py::TestCalculator::test_addition::__::_ PASSED
test_nested_calculator.py::test_standalone_group::_ PASSED
test_nested_calculator.py::test_standalone_group::_::__::_ PASSED

内容的提问来源于stack exchange,提问作者abhijeet more

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 09:55:28