pytest 是否可以在夹具中检测到"-m '不my_mark'"?



是否可以检测商标是否被排除?

我使用 pytest 对嵌入式目标运行一些测试。对于某些测试设置,我可以通过 epdu 控制电源。

对于带有epdu的设置,我想在测试完成后关闭测试设备的电源。

对于没有 epdu 的设置,测试是用-m "not power"调用的,但在这里,power_on夹具不会尝试与 epdu 通信也很重要。

@pytest.fixture(scope='session', autouse=True)
def power_on():
# TODO: just return it called with `-m "not power"`
power_on_test_equipment()
yield
power_off_test_equipment()
@pytest.mark.power_control
def test_something():
power_something_off()

我发现request.keywords['power']如果我使用 pytest 运行 pytest,-m power将是真的,但如果我在没有标记或-m "not power"的情况下运行,这将不存在,这对我的场景没有真正的帮助。

我可以使用两个标记来解决问题,例如'-m"no_power而不是电源",但它看起来不是很优雅。

一种可能性是检查命令行参数。如果你知道你总是把它作为-m "not power"传递,你可以做这样的事情:

@pytest.fixture(scope='session', autouse=True)
def power_on(request):
power = 'not power' not in request.config.getoption('-m')
if power:
power_on_test_equipment()
yield
if power:
power_off_test_equipment()

相关内容

  • 没有找到相关文章

最新更新