Вывод консоли py.test в Jenkins

Вывод консоли Jenkins из заданий, выполняющих тесты py.test, содержит неожиданные символы "[1m" "[0m", как

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

По-видимому, эти символы являются остатками выходного форматирования py.test ("начало сеанса тестирования" отображается жирным шрифтом и окрашивается в окне терминала). Есть ли способ отключить форматирование вывода? Параметра py.test "--color no" недостаточно.

0 ответов

В моем случае я запускаю pytest внутри докера, подавая в суд на описательный конвейер Jenkins, поэтому нужно проверить несколько вещей:

Сначала добавьте ansiColor к options

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

Во-вторых, убедитесь, что вы добавили docker run командовать флагом -t

-t: выделить псевдотерминал

для docker-compose это tty: true

В-третьих, вы можете принудительно раскрасить, добавив --color=yes к команде pytest python -m pytest --color=yes ...

--color= цвет вывода цветного терминала (да / нет / авто).

  1. Установите плагин AnsiColor в Jenkins. В его панели конфигурации появится новый пункт "Ansi Color" с картой цветов xterm.

    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 в браузере!

Риккардо

Другие вопросы по тегам