Python更改prin的pytest格式

2024-06-16 16:13:40 发布

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

我想改变pytest将测试结果打印到屏幕上的方式

这是我的密码:

@pytest.mark.parametrize('equation, result',
                         [('4-3', True), ('3*(50+2)', True)])
def test_check_somethingv2(equation, result):
    assert equation_validation.check_string_validity(equation) == result

现在,当我在终端中使用“pytest-v-s”时,输出如下所示:

> test_calculator.py::test_check_somethingv2[4-3-True] PASSED

我希望输出如下所示:

> test_calculator.py::test_check_somethingv2[4-3: True] PASSED

我知道我可以使用“ids=['4~3:True',…]”为每个测试手动设置它,但是由于我将处理许多测试,所以我希望有一种比这更简单的方法

另外,是否有这样的输出选项

>  test_check_somethingv2[4-3: True] PASSED

Tags: pytesttrue密码屏幕pytestcheck方式
1条回答
网友
1楼 · 发布于 2024-06-16 16:13:40

一种方法是围绕pytest.param编写包装器,例如:

def eqparam(eq, result):
    return pytest.param(eq, result, id=f'{eq}: {result}')


@pytest.mark.parametrize('equation, result',
                         [eqparam('4-3', True), eqparam('3*(50+2)', True)])
def test_check_somethingv2(equation, result):
    assert equation_validation.check_string_validity(equation) == result

结果如下:

$ pytest  collect-only t.py
============================== test session starts ==============================
platform linux   Python 3.6.8, pytest-5.3.2, py-1.8.1, pluggy-0.13.1
rootdir: /home/asottile/workspace/pygments-pre-commit
collected 2 items                                                               
<Module t.py>
  <Function test_check_somethingv2[4-3: True]>
  <Function test_check_somethingv2[3*(50+2): True]>

============================= no tests ran in 0.01s =============================

相关问题 更多 >