如何绕过 pytest 夹具装饰器?

Posted

技术标签:

【中文标题】如何绕过 pytest 夹具装饰器?【英文标题】:How to bypass pytest fixture decorator? 【发布时间】:2022-01-09 04:15:17 【问题描述】:
@pytest_fixture
def some_fix():
    return some_data

我想直接调用这个 some_fix 函数。

【问题讨论】:

这取决于该装饰器是否提供对原始功能的访问,该装饰器来自哪里? 移除装饰器?创建一个没有装饰器的新函数? 这能回答你的问题吗? How to strip decorators from a function in Python 【参考方案1】:

应用任何绕过装饰器的技巧与在增加数字后减少数字具有相同的价值。最干净的解决方案是定义两个函数:

def plain_function():
    # call this function when you need to bypass decorator
    pass


 @pytest.fixture
 def simlar_fixture():
    return plain_function()

【讨论】:

以上是关于如何绕过 pytest 夹具装饰器?的主要内容,如果未能解决你的问题,请参考以下文章

@Patch 装饰器与 pytest 夹具不兼容

如何在具有模拟装饰器的测试中使用 pytest capsys?

无法在装饰器中捕获 pytest 的结果

在使用 pytest 时在装饰器中模拟对象

pytest运行方式及装饰器的使用

python自动测试Pytest中Fixture装饰器