为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

德玛西亚99 2022-05-24 15:00:50
我的部分测试函数正在迭代相当大的集合。例如: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
查看完整描述

1 回答

?
繁华开满天机

TA贡献1816条经验 获得超4个赞

迭代fixture.items() 是一个昂贵的过程(比如从磁盘、数据库或网络读取)?如果是,请使用会话范围的固定装置在开始时计算所有内容并将其保存在内存中并执行迭代。如果您只想摆脱重复的迭代,请更改您的夹具以将函数作为参数并在所有项目上运行该函数。并将你的变成一个函数。


def test_A(fixture):

    def do_stuff():

        <do stuff> 

    fixture(do_stuff)

    assert ... 


@pytest.fixture

def fixture(a,b,func):

    return func(a,b) 


查看完整回答
反对 回复 2022-05-24
  • 1 回答
  • 0 关注
  • 163 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号