Bash 将具有不同功能的2个行为配置文件运行到1个结果中
我有两个非常不同的行为模式:Bash 将具有不同功能的2个行为配置文件运行到1个结果中,bash,behat,exit-code,Bash,Behat,Exit Code,我有两个非常不同的行为模式: simple: suites: default: contexts: - rdx\behatvars\BehatVariablesContext - SimpleFeatureContext extensions: rdx\behatvars\BehatVariablesExtension: ~ proxy: suites: default: contexts:
simple:
suites:
default:
contexts:
- rdx\behatvars\BehatVariablesContext
- SimpleFeatureContext
extensions:
rdx\behatvars\BehatVariablesExtension: ~
proxy:
suites:
default:
contexts:
- ProxyFeatureContext
simple
加载一个本地上下文,proxy
加载另一个本地上下文<代码>简单必须有扩展名,代理
不能有扩展名
结合起来,它们运行的测试应该完全通过。目前,这是我的运行测试脚本:
vendor/bin/behat --profile=proxy --format-settings='{"paths":false}' features/proxy.feature &&
echo &&
vendor/bin/behat --profile=simple --format-settings='{"paths":false}' features/simple.feature
它不仅难看,而且不能正常工作。&&
确保将正确的结果传递给运行测试调用方,但这也意味着如果第一个测试失败,则第二个测试不会运行
我如何保持这两个:
- 两个测试都必须运行
- 退出代码必须是最后一次失败(或
1
如果有失败)
我不想让运行测试
变得更复杂,所以这更像是一个行为问题而不是Bash。我可以告诉Behat运行两个具有不同功能的配置文件并返回组合结果吗?可能是这样的吗
result=0
cmds1 || result=$?
echo
cmds2 || result=$?
exit $result
如果其中一个命令失败,则失败的退出代码将传播到调用方。(如果两个都失败了,最后一个失败就是我们传回调用方的失败。)当测试成功时,我们不接触结果
变量。如果两者都成功,它将保持为零(成功)。这使得测试脚本更加复杂。我正在寻找一个Behat解决方案。如果脚本是由Bash解析的,我看不到一种方法可以让您现有的脚本按照您的要求执行。我也不认为这更复杂。这很容易扩展到更多的测试,一旦你掌握了基本概念,就很容易掌握。不过,我对Behat完全不熟悉。我在上面看到的YAML和JSON的邪恶混合让我觉得这样可能更好;但是当然,这个答案是在黑暗中拍摄的,如果你认为它根本不合适,我将非常乐意删除它。它是合适的,但我仍然希望有一个完整的Behat解决方案=)它比“YAML和JSON的邪恶混合”更糟糕,但它也非常酷。谢谢你!。。。哦,PHP。最好保持清醒。谢谢你的跟进。