在多个数据集上运行相同的测试

use*_*916 5 python unit-testing nose pytest

我开始使用pytest将单元测试添加到可以分析不同类型数据集的软件中.

我编写了一组测试函数,我想将它们应用于不同的数据集.一个复杂因素是数据集非常大,所以我想这样做:

  • 加载数据集1
  • 运行测试
  • 加载数据集2
  • 运行测试

等等.

现在我可以使用一个夹具使用一个数据集:

@pytest.fixture(scope="module")
def data():
    return load_dataset1()
Run Code Online (Sandbox Code Playgroud)

然后传递data给每个测试功能.

我知道我可以将params关键字传递给pytest.fixture.但是,如何实现不同数据集的顺序加载(不能同时将所有数据集加载到RAM中)?

fal*_*tru 4

按照您提到的使用params

@pytest.fixture(scope='module', params=[load_dataset1, load_dataset2])
def data(request):
    loader = request.param
    dataset = loader()
    return dataset
Run Code Online (Sandbox Code Playgroud)

fixture finalization如果您想进行特定于夹具的最终确定,请使用:

@pytest.fixture(scope='module', params=[load_dataset1, load_dataset2])
def data(request):
    loader = request.param
    dataset = loader()
    def fin():
        # finalize dataset-related resource
        pass
    request.addfinalizer(fin)
    return dataset
Run Code Online (Sandbox Code Playgroud)