Python Unittest Discover即使失败也会返回退出代码0

时间:2018-11-05 09:36:56

标签: python python-3.x unit-testing python-unittest

我读过几篇文章,说如果您使用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 :(得分:0)

您是否将单元测试文件命名为test_*.py?因为那是发现所寻找的。否则,无论您进行何种测试,结果都将是:

Ran 0 tests in 0.000s
OK

(顺便说一句,使用if __name__ ... unittest.main()时不必-m unittest discover