Microsoft azure devops python конвейер завершается с ошибкой Bash с кодом '5' - PullRequest
2 голосов
/ 10 января 2020

Я следую инструкциям по https://docs.microsoft.com/en-us/azure/devops/pipelines/ecosystems/python?view=azure-devops.

Вот мой файл azure -pipelines.yml:

# Python package
# Create and test a Python package on multiple Python versions.
# Add steps that analyze code, save the dist with the build record, publish to a PyPI-compatible index, and more:
# https://docs.microsoft.com/azure/devops/pipelines/languages/python

trigger:
- master

pool:
  vmImage: 'ubuntu-latest'
strategy:
  matrix:
    Python27:
      python.version: '2.7'
    Python35:
      python.version: '3.5'
    Python36:
      python.version: '3.6'
    Python37:
      python.version: '3.7'

steps:
- task: UsePythonVersion@0
  inputs:
    versionSpec: '$(python.version)'
  displayName: 'Use Python $(python.version)'

- script: |
    python -m pip install --upgrade pip
    pip install -r requirements.txt
  displayName: 'Install dependencies'

- script: |
    pip install pytest pytest-azurepipelines
    pytest
  displayName: 'pytest'

Запуск конвейера завершается со следующим сообщением об ошибке.

Bash завершено с кодом «5».

Я включил диагностику системы, чтобы добавить сообщения отладки в журнал.

Ошибка возникает в фазе pytest конвейера. enter image description here

Полный журнал доступен по адресу https://github.com/michaelhochleitner/debug-azure-devops-python-pipeline/blob/master/log.txt.

Как обеспечить бесперебойную работу конвейера?

1 Ответ

1 голос
/ 17 января 2020

Как сделать так, чтобы конвейер работал без сбоев?

Согласитесь с phd , проблема возникает из-за 0 тестовых элементов собрано.

Проверьте этот подробный ответ из cewing :

Pytest собирает тесты в соответствии с соглашением об именах. По умолчанию любой файл, который должен содержать тесты, должен иметь имя, начинающееся с test_, и любая функция в файле, которая должна рассматриваться как тест, также должна начинаться с test _.

Так что очевидно, что команда pytest может не найдено ни одного xx.py файла, имя которого начинается с test_. Так что для pytest нет доступных тестов для этого, и это вызывает 0 items collected => Bash exited with code '5'.

. Я проверил ваш урок выше и воспроизвел ту же проблему:

enter image description here

Чтобы решить эту проблему и выполнить запуск успешно:

Для меня я просто создал новый test_anyname.py файл с содержимым (test_xx.py + test_xx method) ниже:

enter image description here

И мой конвейер успешно работает без Bash exited with code '5':

enter image description here

Таким образом, вы должны убедиться, что хотя бы один тестовый элемент может быть найден, и ошибка исчезнет go. Надеюсь, это поможет:)

...