【问题标题】:Pytest class scope parametrizationPytest 类范围参数化
【发布时间】:2019-11-15 12:46:05
【问题描述】:

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

因为这些非常昂贵,所以我想在每个测试类中对它们进行一次初始化。但是,它不会在下一次参数排列时破坏和重新初始化固定装置。

请参阅此示例:https://gist.github.com/vhdirk/3d7bd632c8433eaaa481555a149168c2

我希望 StuffStub 在为参数“foo”和“bar”重新创建 DBStub 时会是一个不同的实例。

我是不是误会了什么?这是一个错误吗?

【问题讨论】:

    标签: python pytest fixtures


    【解决方案1】:

    这不是错误。 灯具之间没有任何关系,因此其中一个不会因为另一个有多个 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()
    

    【讨论】:

      猜你喜欢
      • 2021-09-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-02-21
      • 2016-12-25
      相关资源
      最近更新 更多