Skip to main content
 首页 » 编程设计

python之如何告诉 Python unittest 使用函数中的自定义代码集退出

2025年05月04日9myhome

我如何获得 Python unittest从我的函数中退出并返回状态码?

在我的 tearDown功能我必须做一些处理来生成状态代码,但我想要unittest使用该代码退出。 Python 脚本将从 DOS bat 文件运行,需要回显 %ERRORLEVEL%我想要 %ERRORLEVEL%用 myExitCode 设置.

目前,它总是返回 0 :

import logging 
import unittest 
import sys 
 
myExitCode = 0 
 
class MyTest(unittest.TestCase): 
 
    def setUp(self): 
        logging.info('Setting up test: logged stdout') 
 
    def test(self): 
        logging.info('logged more stdout') 
        self.assertTrue(True) 
 
    def tearDown(self): 
        ## Mocking some processing to generate a customized exit code: 
        myExitCode = 1000 
        logging.info('exit code = %d', myExitCode) 
        return myExitCode 
 
if __name__ == '__main__': 
    logging.basicConfig(level=logging.INFO) 
    logger = logging.getLogger() 
    logger.addHandler(logging.FileHandler('test.log', mode='a')) 
    stderr_file = open('test.log', 'a') 
    unittest.main(testRunner=unittest.TextTestRunner(stream=stderr_file), exit=False) 
    logging.info('Exit Code from main: %d', myExitCode) 
    sys.exit(myExitCode) 

批处理脚本:

python myExitCode.py 
echo %ERRORLEVEL% 

请您参考如下方法:

你需要在这里使用一个全局变量。请记住,这不是很干净:

   def tearDown(self):  
        global myExitCode 
        myExitCode = 1000 
        logging.info('exit code = %d', myExitCode)