В задании Дженкинса поведенческие тесты останавливаются после любого сбоя

Я создал задание jenkins «фристайл», в котором я пытаюсь запустить несколько процессов тестирования BDD. Ниже приведены «команды», которые я поместил в раздел «Jenins/Build/execute shell»:

    cd ~/FEXT_BETA_BDD
    rm -rf allure_reports  allure-reports  allure-results 
    pip install behave
    pip install selenium
    pip install -r features/requirements.txt

    # execute features in plan section
    behave -f allure_behave.formatter:AllureFormatter -f pretty -o ./allure-reports 
        ./features/plan/*.feature

    # execute features in blueprint section
    behave -f allure_behave.formatter:AllureFormatter -f pretty -o ./allure-reports 
        ./features/blueprint/*.feature

То, что я нашел, находится в Jenkins, если есть какой-либо прерывистый сбой тестового примера, такое сообщение отображается в выводе консоли:

"
    ...
    0 features passed, 1 failed, 0 skipped
    0 scenarios passed, 1 failed, 0 skipped
    3 steps passed, 1 failed, 1 skipped, 0 undefined
    Took 2m48.770s
    Build step 'Execute shell' marked build as failure
    "

А оставшиеся тест-кейсы пропускаются. Но если бы я запускал команду поведения непосредственно на своем локальном хосте, я не получил бы такого поведения. Сбой будет обнаружен, и оставшиеся тестовые случаи будут продолжаться до тех пор, пока все не будут завершены.

Итак, как я могу обойти эту проблему в Jenkins?

Спасибо,

Джек


person user3595231    schedule 28.08.2019    source источник


Ответы (2)


Вы можете попробовать следующий синтаксис:

set +e

# execute features in plan section
behave -f allure_behave.formatter:AllureFormatter -f pretty -o ./allure-reports 
        ./features/plan/*.feature || echo 'ALERT: Build failed while running the plan section'

# execute features in blueprint section
behave -f allure_behave.formatter:AllureFormatter -f pretty -o ./allure-reports 
        ./features/blueprint/*.feature || echo 'ALERT: Build failed while running the blueprint section'

# Restoring original configuration
set -e

Примечание:

  • Целью set -e является прерывание работы оболочки при возникновении ошибки. Если вы увидите свой вывод журнала, вы заметите sh -xe в начале выполнения, что подтверждает, что Execute Shell в Jenkins использует параметр -e. Таким образом, чтобы отключить его, вы можете использовать вместо него +e. Однако хорошо восстановить его, как только ваша цель будет достигнута, чтобы последующие команды давали ожидаемый результат.

Ссылка: https://superuser.com/questions/1113014/what-would-set-e-and-set-x-commands-do-in-the-context-of-a-shell-script

person Technext    schedule 29.08.2019

ConsoleOutput из SummaryReporter выше указывает, что у вас есть только одна функция с одним сценарием (который не работает). Behave не останавливается, когда первый сценарий терпит неудачу.

Досрочное прекращение тестового прогона может произойти только в том случае, если произойдут критические вещи:

  • Произошел сбой/исключение в хуке before_all()
  • Возникает критическое исключение (SystemExit, KeyboardInterrupt) для завершения тестового прогона.
  • Ваша реализация говорит вести себя так, чтобы прервать тестовый прогон (имеет смысл при критических сбоях, когда все остальные тесты также не пройдут; зачем тратить время)

НО: если тестовый запуск прерван досрочно, все функции/сценарии, которые еще не выполнены, отображаются как количество непроверенных в сводном отчете.

...
0 features passed, 1 failed, 0 skipped, 2 untested
0 scenarios passed, 1 failed, 0 skipped, 3 untested
0 steps passed, 1 failed, 0 skipped, 0 undefined, 6 untested

СОВЕТ: Непроверенные счетчики обычно скрыты. Они отображаются только в том случае, если счетчик не равен нулю (больше нуля).

В вашем описании этого нет.

СМОТРИТЕ ТАКЖЕ:

person jenisys    schedule 22.09.2019