Хотя мой модульный тест не работает в python, jenkins все еще успешно строится. Почему сборка не работает?

Хотя мой модульный тест не работает в python, jenkins все еще успешно строится. Почему сборка не работает?

Мой код unittest:

from main import IsOdd

import unittest
class IsOddTests(unittest.TestCase):

def testOne(self):
    self.failUnless(IsOdd(1))

def testTwo(self):
    self.failIf(IsOdd(2))

if __name__ == '__main__':
    unittest.main()

мой вывод консоли:

.F
======================================================================
FAIL: testTwo (__main__.IsOddTests)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "test.py", line 13, in testTwo
    self.failIf(IsOdd(3))
AssertionError: True is not false

----------------------------------------------------------------------
Ran 2 tests in 0.000s

FAILED (failures=1)

Тем не менее, моя сборка jenkins по-прежнему успешно строится. Что я должен делать?


person user2793757    schedule 13.02.2014    source источник
comment
Как проходят тесты из Дженкинса?   -  person Paul Hicks    schedule 14.02.2014


Ответы (2)


Недостаточно информации, чтобы ответить на этот вопрос. В конечном счете, Jenkins — это простой инструмент: если запущенный процесс возвращает 0, он показывает, что сборка прошла успешно, а если нет, то показывает, что она не удалась. Если вы делаете что-то вроде запуска сценария оболочки для запуска своих тестов, вам придется встроить проверку, например

if line[-1].startswith("FAILED"):
    return 1

Расскажите нам больше о том, как устроена ваша работа и как вы ожидаете, что она распознает неудачу, и вы можете получить лучший ответ.

person Paul Becotte    schedule 14.02.2014

Jenkins интерпретирует коды выхода программ, которые он запускает. Код выхода 0 означает, что все в порядке. Поэтому, если ваши тесты не пройдены, ваша программа должна вернуть ненулевой код выхода, например, 1, чего, скорее всего, не будет.

Чтобы проверить это, запустите тесты вручную в командной строке, а затем введите выполнить

user@localhost$ $?

для отображения кода выхода последней команды.

person StephenKing    schedule 15.01.2017