Jenkins中的py.test控制台输出

时间:2018-02-06 20:04:20

标签: python jenkins pytest

运行py.test测试的作业的Jenkins控制台输出包含意外字符“[1m”“[0m”喜欢

[1m============== test session starts ==============[0m

显然这些字符是来自py.test输出格式的剩余部分(“测试会话开始”在终端窗口中显示为粗体和彩色)。有没有办法禁用输出格式? py.test的“--color no”选项是不够的。

2 个答案:

答案 0 :(得分:0)

  1. 在Jenkins中安装AnsiColor插件。在其配置面板中,将有一个带有xterm色图的新项目“ Ansi Color”

    1. 您的管道应包含以下内容:

      stage('Pytest'){
        wrap([$class: 'AnsiColorBuildWrapper', 'colorMapName': 'xterm']) {
            sh """
            source ./$PYTHON3_ENV_NAME/bin/activate
      
            # Execute tests
            python3 -m pytest test_cases/${TEST_FILTER} --color=yes ....
            """
        }
      }
      
    2. 在运行期间,您应该会看到pytest阶段的颜色。
      如果您看到bash颜色格式但没有看到颜色,请在浏览器上按F5键!

里卡多

答案 1 :(得分:0)

在我的情况下,我通过诉诸詹金斯(Jenkins)描述性管道在docker内部运行pytest,因此需要验证以下几点:

首先,将ansiColor添加到options

pipeline {
...
    options {
        ansiColor('xterm')
        ...
    }
...
}

第二,确认您已将docker run命令添加到标志-t

-t:分配一个伪tty

对于docker-compose,它为tty: true

第三,您可以通过在pytest命令中添加--color=yes来强制着色 python -m pytest --color=yes ...

-color =彩色终端输出(是/否/自动)。