首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Python更改打印的pytest测试格式

Python更改打印的pytest测试格式
EN

Stack Overflow用户
提问于 2020-01-03 00:39:28
回答 1查看 229关注 0票数 1

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

这是我的代码:

代码语言:javascript
运行
复制
@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“时,输出如下所示:

代码语言:javascript
运行
复制
> test_calculator.py::test_check_somethingv2[4-3-True] PASSED

我希望输出如下所示:

代码语言:javascript
运行
复制
> test_calculator.py::test_check_somethingv2[4-3: True] PASSED

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

另外,有没有获得这样的输出的选项?

代码语言:javascript
运行
复制
>  test_check_somethingv2[4-3: True] PASSED
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-01-03 03:37:03

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

代码语言:javascript
运行
复制
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

这将导致以下结果:

代码语言:javascript
运行
复制
$ 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 =============================
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59566880

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档