运行 UI 自动化测试时如何忽略/停止推送器从日志记录到控制台

Posted

技术标签:

【中文标题】运行 UI 自动化测试时如何忽略/停止推送器从日志记录到控制台【英文标题】:How to ignore/stop pusher from logging to console when running UI automated tests 【发布时间】:2015-11-03 14:11:57 【问题描述】:

测试设置: Minitest+Capybara-poltergeist + phantomjs。

当我开始以无头模式运行测试时,推送器会将消息记录到控制台。有时这些消息太多了,以至于我错过了测试写入的日志。我试图通过执行以下操作来忽略这些消息,但这没有帮助。

Capybara.register_driver :poltergeist do |app|
    Capybara::Poltergeist::Driver.new(app, stdout: nil, phantomjs_logger: nil)
  end

推送消息示例 -

Pusher:状态改变:正在连接 -> 已连接

Pusher:状态改变:初始化 -> 连接

Pusher : 正在连接 : "transport":"ws","url":"wss://ws.pusherapp.com:443/此处已删除文字2?protocol=7&client=js&version=3.0.0&flash =假"

Pusher:状态改变:正在连接 -> 已连接

Pusher : 事件发送 : "event":"pusher:subscribe","data":"auth":"removed the text here","channel":"private-facility-removed the text这里

Pusher : Event recd : "event":"pusher_internal:subscription_succeeded","data":,"channel":"private-facility-removed the text here

Pusher :对于 pusher:subscription_succeeded 的 private-removed the text here 没有回调

Pusher:状态改变:初始化 -> 连接

关于如何停止记录到控制台的任何意见?

【问题讨论】:

【参考方案1】:

Pusher javascript 库仅在 Pusher.log 属性已被分配一个函数时才会记录到控制台:

Pusher.log = function(msg) 
  console.log(msg);
;

为确保在您的测试中不会发生日志记录,您应该确保没有将任何代码写入与上述示例类似的内容中。为了确保您可以在运行测试之前简单地 null Pusher.log 属性。

有关更多信息,请参阅Pusher JavaScript logging 上的文档。

【讨论】:

当我将 pusher.log 设置为 null 时,我收到一条错误消息 -'Minitest::UnexpectedError: ArgumentError: wrong number of arguments (0 for 1+)。这是否意味着,应该在应用程序代码中更改 pusher.log 的值? Pusher.logPusher 定义上的静态属性(参见大写的P)。它不是实例属性。 我在这里输入的是 pusher.log,但实际上我在测试中设置了 Pusher.log。 您看到的错误似乎不太可能是由 JavaScript 错误触发的。澄清 Pusher.log 应该在 JavaScript 上下文中设置,而不是在 Ruby 测试上下文中。

以上是关于运行 UI 自动化测试时如何忽略/停止推送器从日志记录到控制台的主要内容,如果未能解决你的问题,请参考以下文章

ui测试时如何查看应用程序日志

JMeter压测时如何在达到给定错误数量后停止测试

运行 Xcode UI 测试时如何禁用自动完成?

一文秒懂!如何成功进行自动化的UI测试?

Xcode UI 测试 - 当测试套件中的任何给定测试失败时停止测试?

如何在运行测试类时停止托管触发器的执行?