pytest类范围参数化

我有几个固定装置可以进行一些相当昂贵的初始化。其中的一些灯具可以接受参数,从而略微改变其行为。

由于它们非常昂贵,因此我想在每个测试类中对其进行一次初始化。但是,它不会在下一个参数置换时破坏并重新启动固定装置。

请参见以下示例:https://gist.github.com/vhdirk/3d7bd632c8433eaaa481555a149168c2

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

我误会了吗?这是错误吗?

jeff2mac 回答:pytest类范围参数化

这不是错误。 这些灯具之间没有关系,因此其中一个灯具不会因为另一个params而被召回。

在您的情况下,db被调用了两次,因为它使用的db_factory有2个params。另一方面,stuff固定装置仅被调用一次,因为stuff_factoryparams中只有一个项目。

如果stuff也将包含db_factory而没有实际使用其输出(db_factory不会被调用两次以上),您应该得到期望的结果:

@pytest.fixture(scope="class")
def stuff(stuff_factory,db_factory):
    return stuff_factory()
本文链接:https://www.f2er.com/3095350.html

大家都在问