Behave测试运行器在Jenkins上没有彩色输出。

7

我在EC2实例上的Ubuntu服务器14.04上设置了Jenkins。我使用behave作为测试运行器来执行一些Selenium测试。

在Jenkins上,我还安装了插件AnsiColor,希望我可以在Jenkins控制台上获得彩色输出,但是除了Gherking语法之外,其他所有内容都有颜色。Selenium错误、Python调试,所有东西都有颜色...除了behave的输出。

现在问题是,如果我在Mac或Ubuntu上但不是使用Jenkins用户运行测试,一切都正常,颜色也存在。

我真的没有任何要发布的代码,但我可以说一下我尝试过但无济于事的事情:

  • 使用behave --color运行
  • 将AnsiColorPlugin的颜色映射到formatter/ansi_escapes.py中找到的behave转义序列
  • 在Jenkins构建脚本中添加#!/bin/bash以确保它不会使用sh而是使用bash执行

如果这与您有关,我正在使用virtualenv上的Python 3.4

除了实际答案外,任何关于如何调试此问题的建议也欢迎!谢谢


AnsiColor插件中现在启用了哪个选项(Xterm)?如果“behave”输出的每行都会回显/打印给定的关键字,您可以尝试使用“Log parser plugin”并创建一个解析器规则文件,其中使用“info”并提供该关键字作为样式。所有的行将变为蓝色。 - AKS
你有没有在这方面取得任何进展?我也遇到了同样的问题。 - DTI-Matt
@DTI-Matt 没有,放心吧,如果我找到了任何方法,我会将其作为答案发布的,如果我再次尝试的话。 - skamsie
1个回答

3

阅读 PrettyFormatter 的原始源代码,没有办法强制其使用颜色,因为它使用 isatty 来确定是否正在写入实际终端。

但是,启用彩色输出所需的修改非常简单:

https://github.com/mrkafk/behave/commit/5fa2dd3fd1dc7149857df4da156d8fd00f5058a5

我已经创建了拉取请求并测试它在 Jenkins 中运行(当然,在项目配置中启用解析 ANSI 代码后):

enter image description here


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接