我在 pytest 中进行了测试,并添加了一些标记,例如:“ @pytest.mark.xfail”,测试有几种固定方法。如何使用夹具方法获取某个测试的所有标记?
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
Run Code Online (Sandbox Code Playgroud)
这给出了输出:
...
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
Run Code Online (Sandbox Code Playgroud)
更新:使用正确的公共调用来获取 @hoefling 提议的标记。
| 归档时间: |
|
| 查看次数: |
4946 次 |
| 最近记录: |