我的部分测试函数正在迭代相当大的集合。例如: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)
添加回答
举报
0/150
提交
取消