【发布时间】: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将抑制除点线之外的所有内容。如果你想抑制打点,你需要自定义pytestinternals;查看this answer 的工作示例。 -
如果
pytest -q仍然为每个测试打印一行(如test_uf.py::TestUnitMisc::test_main PASSED [100%]),那么您在addopts配置行中的pytest.ini或setup.cfg中存储了详细标志;首先删除它们,这样-qqq就不会被-v标志否定。 -
我的疏忽!我从 pycharm 运行它,并且 pycharm 创建了它自己的运行器 python 脚本,我无法控制(我没有 pytest 配置文件)