模块级设备未运行

2024-05-19 07:07:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我想为其中一个测试模块提供一个特定的安装/拆卸夹具。显然,我希望它在模块中的所有测试之前运行一次设置代码,在所有测试完成之后运行一次

所以,我想到了这个:

import pytest


@pytest.fixture(scope="module")
def setup_and_teardown():
    print("Start")
    yield
    print("End")


def test_checking():
    print("Checking")
    assert True

这不是那样的。只有在模块中提供setup_and_teardown作为第一个测试的参数时,它才会起作用

这就是它的工作方式吗?如果我将它标记为module级别的fixture,它不应该自动运行吗


Tags: 模块and代码importpytestdefsetupstart
1条回答
网友
1楼 · 发布于 2024-05-19 07:07:47

模块作用域的固定装置的行为与任何其他作用域的固定装置相同-仅当它们在测试中明确通过、使用@pytest.mark.usefixtures标记或设置了autouse=True时,才使用它们:

@pytest.fixture(scope="module", autouse=True)
def setup_and_teardown():
    print("setup")
    yield
    print("teardown")

对于在您的示例中执行设置/拆卸的模块和会话范围的装置,这是最常用的选项

对于产生在测试中访问的对象(例如,只能分配一次的扩展资源)的装置,这没有意义,因为装置必须通过测试才能访问。此外,在所有测试中可能都不需要它

相关问题 更多 >

    热门问题