pytest - 如何在执行每个项目之前收集灯具和设置方法

时间:2014-05-28 10:19:51

标签: python pytest

需要帮助来检测测试可执行的所有前提条件。 我的意思是有很多pytest_ *事件,但我没有找到与我需要的东西相对应的东西。 以下是几行代码:

class TestCreate:

 @classmethod
 def setup_class(cls):
    print('setup_class')

 def setup_method(self, method):
     print('setup_method')

 def test_method0(self, usefull_fixture):
     assert usefull_fixture.x == 1

test_method0在conftest中定义了1个有用的l_fixture,在类内部有2个setup方法。我需要的是在测试执行之前收集所有功能和设置功能并准备该信息以便进一步发送或处理。我现在所拥有的只是灯具的名称,但我无法检测到订单和设置方法。也许任何秘密钩子存在或我需要覆盖一些行为。最佳选择是在每个前提条件执行时捕获事件。

*更新:我需要创建插件,可以内省为启动而收集的测试,并检测每个测试将要执行的前提条件。例如,我有事件pytest_pyfunc_call()但它只显示测试方法而不是setup / teardown方法。与其他事件相同。如何在运行时检测特定测试的设置/拆卸方法?

1 个答案:

答案 0 :(得分:1)

我认为这可以解决您的问题:xunit style setup

您可以在模块,类和测试级别定义设置/拆卸方法:

def setup_module(module):
    """ setup any state specific to the execution of the given module."""

def teardown_module(module):
    """ teardown any state that was previously setup with a setup_module
    method.
    """
编辑:你看过http://pytest.org/latest/plugins.html#pytest-hook-reference了吗?使用这些钩子,您可以自定义几乎所有pytest行为。我不知道您要完成什么,但我认为您可以使用pytest_runtest_protocol自定义测试的执行方式。