【问题标题】:unittest colored outputunittest 彩色输出
【发布时间】:2011-03-05 11:53:09
【问题描述】:

我使用unittest(实际上是unittest2)进行Python 测试,使用Python Mock 模拟对象,使用nose 一次性运行所有测试。

我很怀念从绿色/红色条中一眼就能分辨出什么是有效的,什么是错误的。有没有办法从 unittest 获得彩色输出?

(此时更改测试套件不是一种选择,我实际上喜欢 unittest)

【问题讨论】:

  • 你之前用的是什么有绿色/红色条的?

标签: python unit-testing


【解决方案1】:

使用与robert's answer 非常相似的方法,我(今天!)发布了一个可以在unittest 测试结果中启用颜色输出的包。我称它为colour-runner

要安装它,运行:

pip install colour-runner

然后,在您使用unittest.TextTestRunner 的地方,改用colour_runner.runner.ColourTextTestRunner

how it looks with verbosity=1...和verbosity=2

【讨论】:

  • 这适用于哪些平台?我之所以问,是因为 Windows 终端的颜色与 Linux 和 OS X 终端的颜色有很大不同。
  • 这是个好问题。我已经在 linux 和 OS X 上测试过它,但我没有 Windows 机器来测试它。我使用两个库来进行输出。 blessings 库声称它“在与 Windows 上的 colorama 一起使用时应该可以工作”,因此它可能需要那个额外的包。我找不到任何提及pygments 是否支持 Windows,但我怀疑如果不支持,colorama 可能会解决问题。我很想知道这在 Windows 上是如何工作的。
  • 能否请我解释一下否决票,以便我做出改进?否决票本身并不适合采取建设性行动。
  • 是否可以将它与鼻子测试一起使用,沿着 rednose 的路线?
  • @naught101 我很确定这不适用于nose
【解决方案2】:

我在鼻子测试和rednose 方面取得了很好的成功。在撰写本文时,它仍在维护中。

【讨论】:

  • easy_install 对我来说失败了,但 pip 工作正常:sudo pip install rednose
  • 这对我有用,nosetests --verbosity=2 --rednose ./,我使用的是 Python 3.6.8 和 Nose 1.3.7。谢谢!
【解决方案3】:

在 python 2.x 中你可以试试pyrg。但在 Python 3 中不起作用。

【讨论】:

  • 这绝对是最简单的解决方案。
  • 我找到了最新版本(0.2.6),如果在命令行模式下运行,只等待 1ms 的 stdin 上的数据 - 如果它没有收到任何数据,那么它会出现使用消息。将轮询超时更改为更合理的 1000 毫秒很容易
【解决方案4】:

创建一个继承自unittest.TestResult(例如MyResults)的类并实现了一堆方法。然后创建一个继承自unittest.TextTestRunner 的类(例如MyRunner)并覆盖_makeResult() 以返回MyResults 的实例。

然后,构建一个测试套件(您可能已经开始工作了),并调用MyRunner().run(suite)

您可以将任何您喜欢的行为(包括颜色)放入MyResults

【讨论】:

    【解决方案5】:

    pytest 可以做到这一点,而无需对单元测试进行任何更改。

    现在安装 pytest。

    pip install --user pytest
    

    并运行测试以查看颜色!

    【讨论】:

      【解决方案6】:

      如果你以这种方式运行 pytest:

      python -m unittest test_my.py
      

      改成:

      pytest test_my.py
      

      你可以免费获得颜色

      【讨论】:

        【解决方案7】:

        如果您可以只更改测试导入的行,则可以使用redgreenunittest。这是我用unittest 复制的,但它有彩色输出。

        如果你想在不更新代码的任何内容的情况下使用它,你可以像这样使用它:

        import redgreenunittest as unittest
        

        它不是 unittest2 的克隆,所以它不能与 Andrea 的代码一起使用,但它的源代码就在那里,所以 redgreenunittestunittest2 分支不会被淘汰问题。

        此外,欢迎任何“你做错了”的 cmets,只要它们包含一些推理。我宁愿做正确的事。

        【讨论】:

          【解决方案8】:

          我还找到了另一个鼻子着色插件:YANC,https://pypi.python.org/pypi/yanc

          适用于我的 Python 3.5 和鼻子 1.3.7(我无法让上面列出的鼻子的任何其他选项起作用)

          【讨论】:

          • 这应该是公认的答案^^ 颜色很可爱,是其他鼻子插件中最好的
          【解决方案9】:

          尝试使用rudolf 插件进行鼻子测试。

          【讨论】:

          • 没有python 3版本:/
          猜你喜欢
          • 2020-08-31
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-11-05
          • 2015-09-01
          • 1970-01-01
          • 1970-01-01
          • 2015-02-02
          相关资源
          最近更新 更多