t.me/atinfo_chat Telegram группа по автоматизации тестирования

Проблема выловить exception в jenkins нужна помощь....

Теги: #<Tag:0x00007f748704fb48> #<Tag:0x00007f748704f9b8> #<Tag:0x00007f748704f8c8> #<Tag:0x00007f748704f788>

Привет всем!

У меня есть код:

from selenium import webdriver
from pyvirtualdisplay import Display

display = Display(visible=0, size=(800,800))
display.start()
browser = webdriver.Chrome('/home/andrey/Downloads/chromedriver')
browser.get('http://www.google.com/')

try:
    browser.find_element_by_id('gbw')
    print ("Test Pass: ID found")
    browser.find_element_by_id('lga')
    print ("Test Pass: ID found")

except Exception as e:
    print("Exception found",format(e))

browser.close() #close browser

Когда я его запускаю в jenkins тест происходит без ошибок.
Но когда у меня есть ошибка в коде, jenkins ошибку не вылавливает.
Как это можно исправить?

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

При импорте обеих библиотек
При инициализации объекта драйвера
При переходе по ссылке
При закрытии браузера

Да тут сплошные проблемные места, а не код :smiley:

Console output дженкинса покажите?

Я может не правильно, себя объяснил.
Когда я запускаю тест, без изменения кода все работает хорошо.
Но если я сделаю изменения в коде например:

browser.find_element_by_id(‘lga’) ----->>>> browser.find_element_by_id(‘lga5’)

В коде есть ошибка, так как нет такого id на сайте. Вылавливается exception, но Jenkins все равно говорит, что тест прошёл.


используйте exit(1) / assert’ы

Как и отписал товарищ @5am постом ниже - для текущей реализации “теста” добавьте exit(1) после принта с текстом экзепшена

print("Exception found",format(e))
exit(1)

А вообще так не делается. Убирайте try/except вообще, и пусть тесты падают сами по себе, при возникновении ошибок; текст ошибки вместе с трейсбеком увидите в том же аутпуте консоли

Вообще смотрите в сторону хотя бы стандартного unittest фреймворка, для нормальной организации тестов, ибо код из первого поста - это не тест, а костыль)