【问题标题】:Making PYTEST quieter when run from PYCHARM从 PYCHARM 运行时使 PYTEST 更安静
【发布时间】:2019-09-12 07:32:26
【问题描述】:

更新:下面显示的消息不受 pytest 各种“-q”安静选项的控制。它们来自 TeamCity 插件...
请参阅下面的答案。

原文:我已经阅读了现有的堆栈溢出答案以使 pytest 静音,但没有人告诉我如何使我收到的大量冗余“测试通过”消息静音。我有这么多,我的错误会在页面外滚动时丢失。 (由于这是在pycharm中,所以我可以添加args,但我不控制命令行。)

帮助!

为清楚起见,我想删除这些消息: (--silent 和 -q 似乎都不起作用)

test_lang.py::TestParsing::test_parsing PASSED                           [  2%]
test_lang.py::TestParsing::test_xxx PASSED                               [  3%]
test_mixin.py::TestHeadSettable::test_headsettable PASSED                [  4%]
test_mixin.py::TestPathy::test_tree_null_creation PASSED 

...

test_uf.py::TestListyStructure::test_extend[UnitList] PASSED             [ 96%]
test_uf.py::TestListyStructure::test_extend[UnitListWrapper] PASSED      [ 97%]
test_uf.py::TestListyStructure::test_slice[UnitList] PASSED              [ 98%]
test_uf.py::TestListyStructure::test_slice[UnitListWrapper] PASSED       [ 99%]
test_uf.py::TestUnitMisc::test_main PASSED                               [100%]

============================= 101 passed in 0.49s ==============================

【问题讨论】:

  • 你运行什么命令来执行你的测试?
  • 如果您在 Linux 操作系统上从命令行运行它,您可以使用:<your_command> >/dev/null。在这种情况下,STDOUT 将被重定向到/dev/null,因此如果在运行测试期间出现错误,您会看到它。如果你想完全抑制pytest 的输出,你可以使用:` >/dev/null 2>&1`
  • pytest -p no:terminal 将抑制任何输出,pytest -qqq 将抑制除点线之外的所有内容。如果你想抑制打点,你需要自定义pytest internals;查看this answer 的工作示例。
  • 如果pytest -q 仍然为每个测试打印一行(如test_uf.py::TestUnitMisc::test_main PASSED [100%]),那么您在addopts 配置行中的pytest.inisetup.cfg 中存储了详细标志;首先删除它们,这样-qqq 就不会被-v 标志否定。
  • 我的疏忽!我从 pycharm 运行它,并且 pycharm 创建了它自己的运行器 python 脚本,我无法控制(我没有 pytest 配置文件)

标签: python pycharm pytest


【解决方案1】:

(最新版本的 PyCharm 详情见底部)

PYCHARM 2018 解决方案 Pycharm 正在静默安装一个名为 TeamCity 的 pytest 插件。它需要这个插件来跟踪哪些测试成功或失败。您可以通过编辑 Pycharm 运行器脚本来禁用此插件的加载。 (糟糕!)

在 Mac 上,此文件位于: /Applications/PyCharm.app/Contents/helpers/pycharm/_jb_pytest_runner.py

添加如下所示的行来禁用TeamCity的加载:

...
jb_doc_args("pytest", args)
# We need to preparse numprocesses because user may set it using ini file
plugins_to_load = []    # <--- ADD THIS LINE TO AVOID TEAMCITY PLUGIN
config_result = real_prepare_config(args, plugins_to_load)
...
UPDATE FOR 2019.3 and later.
On a Mac this file is located at: /Applications/PyCharm.app/Contents/plugins/python/helpers/pycharm/_jb_pytest_runner.py


    ...
    jb_doc_args("pytest", args)
    plugins_to_load = []    # ADDED THIS LINE TO AVOID EXTRA PYTEST PRINTING
    ...



【讨论】:

    【解决方案2】:

    Linux:

    您可以使用:&lt;your_command&gt; &gt;/dev/null。在这种情况下,STDOUT 将被重定向到/dev/null。这意味着如果在运行测试期间出现错误(STDERR),您会看到它。如果你想完全抑制pytest 的输出,你可以使用:&lt;your_command&gt; &gt;/dev/null 2&gt;&amp;1。在这种情况下,STDOUT 和 STDERR 将被重定向到 /dev/null

    示例:

    py.test test.py >/dev/null 2>&1
    

    Windows:

    Windows 操作系统的情况非常相似。只有你可以使用NUL insted 或/dev/null

    示例:

    py.test test.py 2>&1 >NUL
    

    【讨论】:

      猜你喜欢
      • 2018-08-28
      • 2020-04-25
      • 2021-10-20
      • 2023-02-11
      • 1970-01-01
      • 2022-12-15
      • 1970-01-01
      • 1970-01-01
      • 2022-12-11
      相关资源
      最近更新 更多