python pytest – 如何在测试的夹具方法中获取测试标记?

我在 pytest 中有一个测试,并添加了一些标记,例如:’ ‘。’@pytest.mark.xfail‘,测试有几个夹具方法,如何使用夹具方法获得某个测试的所有标记?

解决方案:

可以从 fixture 请求中获取标记。node 属性,使用 iter_markers从这个(无意义的)例子中可以看出。

import pytest


@pytest.fixture
def get_marks(request):
    marks = [m.name for m in request.node.iter_markers()]
    if request.node.parent:
        marks += [m.name for m in request.node.parent.iter_markers()]
    yield marks


@pytest.mark.parametrize('number', [1, 2, 3])
@pytest.mark.foo
@pytest.mark.xfail
def test_marks(get_marks, number):
    print(get_marks)
    assert 'xfail' in get_marks
    assert number == 42

这就是输出。

...
xfail                                      [100%]['parametrize', 'xfail', 'foo']

get_marks = ['parametrize', 'xfail', 'foo'], number = 3

    @pytest.mark.parametrize('number', [1, 2, 3])
    @pytest.mark.foo
    @pytest.mark.xfail
    def test_marks(get_marks, number):
        print(get_marks)
        assert 'xfail' in get_marks
>       assert number == 42
E       assert 3 == 42

更新:按照@hoefling的建议,使用正确的公共调用来获取标记。

给TA打赏
共{{data.count}}人
人已打赏
解决方案

FPGA中不必要的寄存器复位

2022-5-11 18:00:15

解决方案

违规写入动态分配数组的位置

2022-5-11 18:00:17

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索