如何访问pytest夹具中的所有标记?

2024-05-15 01:11:17 发布

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

我正在使用pytest,我想用标记标记我的测试,这些标记将指定要加载到驱动程序中的哪个页面。这很容易使用behave上下文对象,但我找不到如何使用pytest

例如,对于此代码

import pytest

@pytest.fixture
def text(request):
    if 'hello' in X:
        return 'found it!'
    return 'did not find it :('

@pytest.mark.hello
def test_hello(text):
    assert text == 'found it!'

X应该是什么,这样我才能通过这个测试? 我尝试了request.node.own_markers,但那只会给我一个空列表,即使我标记了测试


Tags: 对象代码text标记importhelloreturnpytest
2条回答

我通过玩游戏找到了答案。夹具被标记为“scope=module”,而只有测试函数具有该标记。因此,它超出了设备的范围,因此为空列表。当我使夹具具有默认范围时,找到了标记

request.node.own_markersrequest.node.iter_markers()可以让您访问节点的标记

例如:

(Pdb) request.node.own_markers
[Mark(name='hello', args=(), kwargs={})]
(Pdb) request.node.iter_markers()
<generator object Node.iter_markers.<locals>.<genexpr> at 0x7f3a601a60a0>
(Pdb) p list(request.node.iter_markers())
[Mark(name='hello', args=(), kwargs={})]

如果标记应用于更高的范围,则这两种方法将有所不同(例如)

markers文档中有一些示例(没有一个使用request,但是item在这些示例中是相同的(它们使用pytest钩子)

相关问题 更多 >

    热门问题