我最近开始使用 git,也开始了单元测试(使用 Python 的unittest
模块)。我想在每次提交时运行我的测试,并且只有在它们通过时才提交。
我猜我需要使用pre-commit
in /hooks
,并且我已经设法让它运行测试,但是如果测试失败,我似乎无法找到停止提交的方法。我正在运行测试make test
,而后者又在运行python3.1 foo.py --test
。无论测试通过还是失败,似乎我都没有得到不同的退出条件,但我可能找错了地方。
编辑:这是我想在这里做的不寻常的事情吗?我以为这是一个普遍的要求...
Edit2:以防人们懒得看评论,问题是unittest.TextTestRunner
无论测试套件是否成功,它都不会以非零状态退出。为了抓住它,我做了:
result = runner.run(allTests)
if not result.wasSuccessful():
sys.exit(1)