【问题标题】:can we define pytest hooks outside conftest.py?我们可以在 conftest.py 之外定义 pytest 钩子吗?
【发布时间】:2016-06-22 08:27:43
【问题描述】:

我在下面的站点中做了一些研究,但我还没有弄清楚是否可以在 conftest.py 文件中定义 pytest 钩子(例如 pytest_runtest_makereport)。 基本上,我想弄清楚的是,例如,如果我通过在基类中定义一个钩子来避免复制 conftest.py 文件,那么使用这个基类的其他项目(或类)可以继承这些钩子。

非常感谢。

我使用过的参考资料:

【问题讨论】:

    标签: python hook pytest


    【解决方案1】:

    推荐的方法是将此钩子移动到适当的插件中,但您可以通过在项目的conftest 文件中声明pytest_plugins 变量来强制将模块解释为一个模块:

    pytest_plugins = ['myproject.plugin'] # myproject.plugin contains hooks
    

    或者你可以使用-p标志py.test

    py.test -p myproject.module
    

    请注意,最后一个选项也可以在您的 pytest.ini 中配置:

    [pytest]
    addopts = -p myproject.module
    

    【讨论】:

      【解决方案2】:

      有一种简单的方法可以实现这一点,只需将所有 pytest 钩子放在一个 python 文件中,然后将其导入到测试支柱文件夹中的 conftest.py 文件中。

      例如:在您的测试支柱的 conftest.py 中

      from custom_hooks import *
      

      然后你可以重用所有的钩子。

      如果你想覆盖一个,只需在 conftest.py 中重新定义它。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-06-15
        • 1970-01-01
        • 2012-01-09
        • 1970-01-01
        • 2023-01-11
        • 1970-01-01
        相关资源
        最近更新 更多