Python Unittest Обнаружить код возврата 0, даже если произошел сбой - PullRequest
0 голосов
/ 05 ноября 2018

Я прочитал несколько сообщений, в которых говорится, что если вы вызываете свои юнит-тесты с помощью unittest.main (), они должны выйти с кодом ошибки, если они потерпят неудачу. Я называю свои юнит-тесты командой: python -m unittest discover -v. Я использую Python 3.6.6. Пример юнит-теста может выглядеть так:

from server import app
import unittest

class ServerTestCase(unittest.TestCase):
    """
    Unittesting for the server application.
    """


    def setUp(self):
        """
        Create a test client
        """
        self.app = app.test_client()
        self.app.testing = True 

    def tearDown(self):
        pass

    def test_root_endpoint(self):
        """
        Testing the root endpoint
        """

        result = self.app.get('/') 
        self.assertEqual(result.status_code, 200) 

    def test_health_endpoint(self):
        """
        Testing the health endpoint
        """

        result = self.app.get('/health')
        assert b'UP' in result.data

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

Даже если один из моих тестов не пройден, я получаю это при проверке кода выхода:

$ echo $?
0

Что я делаю не так?

1 Ответ

0 голосов
/ 05 ноября 2018

Вы назвали файлы unittest чем-то вроде test_*.py? Потому что это то, что ищет Discover. В противном случае, независимо от ваших тестов, результат будет:

Ran 0 tests in 0.000s
OK

(Кстати, вам не нужно if __name__ ... unittest.main() при использовании -m unittest discover)

...