【发布时间】:2011-01-06 10:20:09
【问题描述】:
我最近开始使用 git,也开始了单元测试(使用 Python 的 unittest 模块)。我想在每次提交时运行我的测试,并且只有在它们通过时才提交。
我猜我需要在/hooks 中使用pre-commit,并且我已经设法让它运行测试,但是如果测试失败,我似乎无法找到停止提交的方法。我正在使用make test 运行测试,而后者又运行python3.1 foo.py --test。无论测试通过还是失败,我似乎都没有得到不同的退出条件,但我可能看错了地方。
编辑:这是我想在这里做的不寻常的事情吗?我原以为这是一个常见的要求......
Edit2:以防万一人们懒得阅读 cmets,问题是 unittest.TextTestRunner 不会以非零状态退出,无论测试套件是成功还是不是。为了抓住它,我做了:
result = runner.run(allTests)
if not result.wasSuccessful():
sys.exit(1)
【问题讨论】:
-
最近关于 SO 的问题很快就会出现在 Google 查询的顶部;然后排名也迅速下降。提出问题并在 5 分钟后成为 Google 的热门话题并不少见;但一周后,您可能会更难找到它。
-
@Brian Ah,很公平。我没有意识到 Google 是这样工作的。
-
您的
python3.1 foo.py --test命令是否返回非零退出状态?如果您手动运行make是否返回非零退出状态?你的pre-commit钩子的内容是什么?
标签: python unit-testing git githooks