行为测试运行程序在詹金斯上没有彩色输出
我在EC2实例的Ubuntu服务器14.04上安装了jenkins.我有一些硒测试是使用 behave
作为测试运行程序来执行的.
I have setup jenkins on Ubuntu server 14.04 on an EC2 instance. I have some selenium tests that I execute using behave
as test runner.
在Jenkins上,我还安装了插件 AnsiColor ,希望我可以在上面获得颜色输出jenkins控制台,但是除了Gherking语法之外,其他所有颜色我都得到了体现. Selenium错误,python调试,所有内容都有颜色...行为的输出除外.
On Jenkins I have also installed the plugin AnsiColor hoping that I can get color output on the jenkins console, however I get color for everything else except for the Gherking syntax. Selenium errors, python debug, everything has color...except for the output of behave.
现在的问题是,如果我在Mac或Ubuntu上运行测试,但不与Jenkins用户一起运行,则一切正常,并且颜色在那里.
Now the thing is if I run the tests on a Mac or on Ubuntu but not with the Jenkins user, everything works fine and the colors are there.
我确实没有任何代码可发布,但是我可以说我尝试不了的内容:
I really don't have any code to post, but I can say what I have tried to no avail:
- 运行行为与
behave --color
- 将AnsiColorPlugin的颜色映射映射到
formatter/ansi_escapes.py
中发现的行为的转义序列 - 将
#!/bin/bash
添加到jenkins构建脚本中,以确保不会使用sh
而不是bash
来执行该脚本.
- running behave with
behave --color
- mapping the color map of AnsiColorPlugin to the escape sequences of behave found in
formatter/ansi_escapes.py
- adding
#!/bin/bash
to jenkins build script to make sure it does not get executed withsh
instead ofbash
如果这有任何意义,我正在virtualenv
If this is of any relevance I am using python 3.4 on virtualenv
除实际答案外,也欢迎提供有关如何调试此问题的任何建议!谢谢
Besides the actual answer, any suggestions on how to debug this are also welcome! thanks
阅读PrettyFormatter
的原始源代码,没有办法强迫它使用颜色,因为它使用isatty
来确定它是否正在写入实际的终端.
Reading original source code of PrettyFormatter
, there's no way to force it to use colors as it uses isatty
to determine if it's writing to actual terminal.
但是,进行必要的修改以实现颜色输出是微不足道的:
However, necessary modifications to enable color output are trivial:
https://github.com/mrkafk/behave/commit/5fa2dd3fd1dc71498df4>
https://github.com/mrkafk/behave/commit/5fa2dd3fd1dc7149857df4da156d8fd00f5058a5
我已经创建了拉取请求,并测试了它是否可以在Jenkins中工作(当然,在项目配置中启用了解析ANSI代码之后):
I've created pull request and tested it to work in Jenkins (after enabling parsing ANSI codes in project configuration of course):