我的目标是通过一个小的* .bat脚本执行一个python脚本(执行一些单元测试)。 * .bat脚本还应该接收python脚本的退出状态。但似乎* .py文件的退出状态未正确传输。
我的testit.py:
execute_some_unittests()
...
if success:
sys.exit(1)
else:
sys.exit(2)
# End of the script
我的test.bat:
python C:\testit.py
echo %ERRORLEVEL%
我在execute_some_unittests()中运行的单元测试,运行test.bat导致1,2 或0 !!! 我绝对确定代码到达sys.exit(1 )(因为我记录了所有内容)但是(取决于测试的单元测试)它出错了。
我的猜测是执行单元测试是设置一些标志,这些标志将与退出代码合并,并产生一个像16位退出代码(而不是8)的unix,并且cmd对我的退出代码进行了截断... < / p>
备注:
我在这个问题上工作了2天,并且对每一个想法都感激不尽......
我正在使用Win7,python 2.6,模块:unittest,doctest,sys,os
更新:被要求提供完整的工作示例:
test.py:
import unittest
from scipy.interpolate import interp1d
class Test(unittest.TestCase):
def test_basic(self):
self.failUnlessEqual(1, 1)
if __name__ == '__main__':
suite = unittest.TestLoader().loadTestsFromTestCase(Test)
unittest.TextTestRunner(verbosity=2).run(suite)
import sys
sys.exit(42)
test.bat的:
python C:\test.py
echo %ERRORLEVEL%
结果:错误级别0(没有导入scipy.interpolate它将是42,但scipy不是产生此问题的唯一模块)
答案 0 :(得分:1)
这是scipy
模块中的已知错误。请参阅问题“import scipy.sparse.sparsetools causes consistent exit code 0”。
这个问题似乎仍然存在......