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

jenkins
selenium
webdriver
python
Теги: #<Tag:0x00007fedbb847000> #<Tag:0x00007fedbb846e98> #<Tag:0x00007fedbb846d30> #<Tag:0x00007fedbb846b28>

#1

Привет всем!

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

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 ошибку не вылавливает.
Как это можно исправить?


(Artur Korobeynyk) #2

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


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

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

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


#4

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

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

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



(5am) #5

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


(ex3me0) #6

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

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

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

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