Pytest类作用域参数化

2024-05-14 10:05:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一些装置,做一些初始化,这是相当昂贵的夫妇。其中一些装置可以接受参数,稍微改变它们的行为。你知道吗

因为它们太贵了,我想每个测试类初始化它们一次。但是,它不会在下一个参数排列上销毁和重新安装固定装置。你知道吗

看这个例子:https://gist.github.com/vhdirk/3d7bd632c8433eaaa481555a149168c2

当为参数'foo'和'bar'重新创建DBStub时,我希望StuffStub会是一个不同的实例。你知道吗

我误解了什么吗?这是虫子吗?你知道吗


Tags: 实例httpsgithubcom参数foobar例子
1条回答
网友
1楼 · 发布于 2024-05-14 10:05:21

这不是虫子。这些fixture之间没有关系,因此其中一个fixture不会因为另一个fixture有多个params而被再次调用。你知道吗

在您的例子中,db被调用两次,因为它使用的db_factory有2params。另一方面,stufffixture只被调用一次,因为stuff_factoryparams中只有一个项。你知道吗

如果stuff也包含db_factory而不实际使用其输出(db_factory的调用不会超过两次),您应该得到您所期望的结果:

@pytest.fixture(scope="class")
def stuff(stuff_factory, db_factory):
    return stuff_factory()

相关问题 更多 >

    热门问题