如何解决pytest:在夹具中检测 -m “not 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,我发现 -m power
将是真的,但如果我在没有标记或使用 -m "not power"
的情况下运行,它将不存在,这对我的场景。
我可以使用两个标记来解决问题,例如`-m "no_power and not 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()
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。