gpt4 book ai didi

python - Pytest 隐藏了一些参数值

转载 作者:行者123 更新时间:2023-12-04 13:35:16 30 4
gpt4 key购买 nike

运行 pytest 时,我可以看到每个测试及其参数值。例如:

import pytest

@pytest.mark.parametrize("a", [1])
def test_foo(a):
pass

在终端上,我可以看到值 1:
plugins: metadata-1.8.0, timeout-1.3.3, html-2.0.1
collected 1 item
<Module a_tests.py>
<Function test_foo[1]>
问题是,在更复杂的值类型(如列表)上,pytest 隐藏了值:
import pytest

@pytest.mark.parametrize("a", [[1,2,3]])
def test_foo(a):
pass

plugins: metadata-1.8.0, timeout-1.3.3, html-2.0.1
collected 1 item
<Module a_tests.py>
<Function test_foo[a0]>
如何查看列表的值?

最佳答案

您可以使用 ids自定义参数化测试函数名称的参数。
在您的示例中,最简单的方法就是使用 str获取参数的字符串表示形式:

import pytest

@pytest.mark.parametrize("a", [[1,2,3], [4, 5, 6]], ids=str)
def test_foo(a):
pass
这给出:
test.py::test_foo[[1, 2, 3]] 
test.py::test_foo[[4, 5, 6]]
对于更复杂的名称,您可以使用将参数作为参数的函数。这是一个简单的例子:
def param_name(param):
if isinstance(param, list):
return '-'.join([str(el) for el in param])
return str(param)

@pytest.mark.parametrize("a", [[1,2,3], [4,5,6]], ids=param_name)
def test_foo(a):
pass
这给出:
test.py::test_foo[1-2-3] 
test.py::test_foo[4-5-6]

关于python - Pytest 隐藏了一些参数值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62516698/

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