参数化后如何运行拆卸功能/夹具

问题描述

我正在尝试运行tearDown函数/夹具来实现一个测试用例的整个参数化。因此,我希望在我的conftest.py文件中包含如下内容

@pytest.fixture(autouse=True, scope="parametrization")
def parametrization_scope():
    print("First run of parametrization fixture")
    # Executing 100 parametrizations
    yield
    print("Yield run of parametrization fixture")

在我的test.py中类似于

@pytest.mark.parametrize(n-params)
# run initiate fixture here of parametrization
def test():
    # executing n number of times

# run yield fixture here of parametrization

解决方案

您可以使用测试类解决缺少的参数化&qot;范围,如下所示:

import pytest

@pytest.fixture(scope="class")
def foo():
    print("setup")
    yield None
    print("teardown")

class TestSum:
    @pytest.mark.parametrize(
        "a,b,c",
        [(3, 5, 8), (2, 4, 6)],
    )
    def test_eval(self, a, b, c, foo):
        assert a + b == c

如果只有TestSum类使用fixture foo,您甚至可以将foo的定义放在该类中。

相关文章