【问题标题】:Protractor exits with retcode 1 if tests are skipped/pended如果测试被跳过/挂起,量角器会以 retcode 1 退出
【发布时间】:2021-01-29 22:03:43
【问题描述】:

我的构建管道依赖于 Protractor 进程,当出现错误时,该进程会以不成功的 retcode 终止。我所有的测试都通过了,但我只是添加了一个挂起的测试(使用 Jasmine 的 pending('reason'))。这导致 Protractor 以 1 的 retcode 退出并导致管道问题。

我已经patched Jasmine 规范报告者正确地将未决测试识别为非失败。我该如何做类似的事情来防止 Protractor 存在故障代码?它仍然认为有测试失败,所以它要么在它到达我的自定义报告器之前​​确定运行状态,要么它正在使用其他一些机制。

这是我的日志显示的内容:

[2021-01-29T06:06:46.352Z] **************************************************
[2021-01-29T06:06:46.352Z] *                    Pending                     *
[2021-01-29T06:06:46.352Z] **************************************************
[2021-01-29T06:06:46.352Z] 
[2021-01-29T06:06:46.352Z] 1) Sample pended test
[2021-01-29T06:06:46.352Z]   Pended as an example
[2021-01-29T06:06:46.352Z] 
[2021-01-29T06:06:46.352Z] Executed 19 of 22 specs INCOMPLETE (1 PENDING) (2 SKIPPED) in 3 mins 49 secs.
[2021-01-29T06:06:46.352Z] [06:06:46] I/launcher - 0 instance(s) of WebDriver still running
[2021-01-29T06:06:46.352Z] [06:06:46] I/launcher - chrome #01 failed 1 test(s)
[2021-01-29T06:06:46.352Z] [06:06:46] I/launcher - overall: 1 failed spec(s)
[2021-01-29T06:06:46.352Z] [06:06:46] E/launcher - Process exited with error code 1

根据“总体:1 个失败的规范”消息,Protractor 本身似乎仍在将测试视为失败。如何让 Protractor 不将挂起的测试视为失败,并返回退出代码 0?

【问题讨论】:

  • 你用的是哪个量角器
  • 和茉莉版本
  • 量角器 7.0.0。茉莉花 3.6.3.

标签: protractor


【解决方案1】:

看起来当您执行pending('reason') 时,代码会自动传递给1,但这是不成功的。

问题是,如果量角器遇到真正的错误,它的值也将是1,所以你不能很容易地抓住它,并确保这是来自待定测试

但是,由于您使用的是 Jasmine 3.6.3,因此您可以利用它提供的另一个优势。您可以使用xit,而不是使用pending。这将禁用您的 it 块。更多信息https://jasmine.github.io/api/2.7/global.html#xit

【讨论】:

  • 这些测试是基于其他情况而被挂起的——例如有一个像if( condition ) pending("Test skipped for <reason>"); 这样的结构,所以很遗憾xit 不是一个选项。没有办法修改retcode吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多