pytest:避免在多个测试中对相同数据结构进行长时间迭代

我的部分测试函数正在迭代相当大的集合。


例如:


def test_A(fixture):

    for elem, elem_data in fixture.items():

        <do stuff>

    assert ...


def test_B(fixture):

    for elem, elem_data in fixture.items():

        <do stuff>

    assert ...

我不想统一它们以保持不同用例的可读性和报告,但我确实想以某种方式摆脱重复迭代并优化运行时间。


有什么建议么?


附加数据:

fixture(数据结构)在上面提到的所有测试中都是相同的。每个测试验证嵌套数据结构的另一个(业务逻辑相关)方面。do stuff

的示例是:另一个嵌套的 for -> 然后检查某个元素是否不包含在另一个列表中。


Python

单元测试

pytest


德玛西亚99
浏览 164回答 1
1回答

繁华开满天机

迭代fixture.items() 是一个昂贵的过程(比如从磁盘、数据库或网络读取)?如果是,请使用会话范围的固定装置在开始时计算所有内容并将其保存在内存中并执行迭代。如果您只想摆脱重复的迭代,请更改您的夹具以将函数作为参数并在所有项目上运行该函数。并将你的变成一个函数。def test_A(fixture):&nbsp; &nbsp; def do_stuff():&nbsp; &nbsp; &nbsp; &nbsp; <do stuff>&nbsp;&nbsp; &nbsp; fixture(do_stuff)&nbsp; &nbsp; assert ...&nbsp;@pytest.fixturedef fixture(a,b,func):&nbsp; &nbsp; return func(a,b)&nbsp;
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python