【发布时间】:2018-07-06 07:33:27
【问题描述】:
我正在制作一个 shell 脚本,它作为 CI 管道的一部分运行一系列测试。我想运行所有测试(如果一项测试失败,我不想提前退出)。然后,在脚本结束时,如果任何测试失败,我想返回一个否定的退出代码。
任何帮助将不胜感激。我觉得这将是一个非常常见的用例,但我无法通过一些研究找到解决方案。我很确定我不想要set -e,因为它会提前退出。
我目前的想法是创建一个标志来跟踪任何失败的测试:
flag=0
pytest -s || flag=1
go test -v ./... || flag=1
exit $flag
这看起来很奇怪,而且工作量比必要的要多,但我是 bash 脚本的新手。我错过了什么吗?
【问题讨论】:
-
您所拥有的是一个好方法。什么是失败的?将
$flag替换为flag。 -
测试如何运行?在循环中?
-
使用
... || flag=1(不需要$) -
必须为脚本中的每一行指定这一点似乎过于冗长。目前,我只运行了几个命令,但如果将来添加更多测试,恐怕这将无法很好地扩展。
-
感谢您的反馈!我进行了编辑。我没有循环运行测试。