gpt4 book ai didi

python - 如何在 conftest.py 中检索 py.test 的标记?

转载 作者:太空宇宙 更新时间:2023-11-03 15:40:48 26 4
gpt4 key购买 nike

我正在使用 py.test 运行测试,并想访问我在命令行上设置的标记。我已经在 conftest.py 中尝试了以下代码(基于我找到的文档 here )在每个运行测试使用的 fixture (即设置测试的 fixture )中:

@pytest.fixture
def basedriver(request):
...
node = request.node
print("Marker: %s" % str(node.get_marker('set1')))
...

但是当我调用如下测试时:

py.test -s -m "set1 or ready"

我得到以下输出

Marker: None

我好像做错了。怎样做才是对的?

理想情况下,我可以检索整个 字符串,即“set1 or ready”...

最佳答案

request.node 是测试函数对象,所以 request.node.get_closest_marker('set1') 返回附加到当前正在执行的测试的标记,或者 None 如果找不到具有该名称的标记。例如,运行测试

@pytest.fixture
def basedriver(request):
node = request.node
print('Marker:', node.get_closest_marker('set1'))

@pytest.mark.set1
def test_spam(basedriver):
assert True

def test_eggs(basedriver):
assert True

将打印

test_spam.py::test_spam Marker: MarkInfo(_marks=[Mark(name='set1', args=(), kwargs={})])
PASSED
test_spam.py::test_eggs Marker: None
PASSED

你想要的是命令行参数-m的传递值。通过配置 fixture 访问它:

@pytest.fixture
def basedriver(pytestconfig):
markers_arg = pytestconfig.getoption('-m')
print('markers passed from command line:', markers_arg)
...

关于python - 如何在 conftest.py 中检索 py.test 的标记?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52585701/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com