--num-flaky-test-attempts是重新运行整个套件还是只是失败的测试?

时间:2019-04-27 08:27:54

标签: firebase-test-lab

gcloud firebase test android run的{​​{3}}参数表示:

  

指定如果一个或多个测试用例由于任何原因失败的情况下,应重新尝试执行测试的次数。

这意味着它仅重新运行失败的测试,而不重新运行整个套件,对吗?换句话说,一旦测试通过就不会重试,对吧?

2 个答案:

答案 0 :(得分:0)

--num-flaky-test-attempts的命令行参数gcloud firebase test android run似乎可以重新运行所有测试,而不仅仅是失败的测试。

我使用--num-flaky-test-attempts 10运行了一套测试,这里是该套件中一个测试的日志时间戳:

04-27 03:41:51.225 passed
04-27 03:41:50.519 passed
04-27 03:41:43.533 failed
04-27 03:41:48.625 failed 
04-27 03:42:13.886 failed
04-27 03:41:33.749 failed
04-27 03:41:43.694 failed
04-27 03:41:42.101 failed
04-27 03:41:20.310 passed
04-27 03:40:17.819 passed
04-27 03:33:14.154 failed

似乎每次都执行了整个测试套件。在某些情况下,上述测试通过了,在某些情况下失败了。它多次通过并失败,因此很明显,无论它通过还是失败,它都在重新运行测试。

我相信总共进行了11次测试,因为我指定了--num-flaky-test-attempts 10,这意味着它尝试运行套件一次,并且由于失败,它又运行了10次,总共11次。

以下是完整的命令,以防对任何人有帮助:

gcloud firebase test android run \
--project locuslabs-android-sdk \
--app app/build/outputs/apk/debug/app-debug.apk \
--test app/build/outputs/apk/androidTest/debug/app-debug-androidTest.apk \
--device model=walleye,version=28,locale=en_US,orientation=portrait \
--test-targets "class com.locuslabs.android.sdk.TestUITest" \
--use-orchestrator \
--num-flaky-test-attempts 10 \
--timeout 30m \
--environment-variables numShards=10,shardIndex=2 \
--verbosity debug

答案 1 :(得分:0)

文档针对--num-flaky-test-attempts声明以下内容:

  

指定如果一个或多个测试用例由于任何原因失败的情况下,应重新尝试执行测试的次数。最初失败但重新尝试成功的执行被报告为FLAKY。

即如果测试执行中的一个测试用例失败,测试实验室将再次重新运行整个测试执行测试执行包括在一台设备上运行整个测试套件。

示例:您在两台设备上执行测试套件,将它们称为 A B 。整个测试套件在 A 上成功,但是一个测试用例在 B 上失败。在这种情况下,只有设备 B 上的测试套件才会重新尝试。