运行 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.log
是Pusher
定义上的静态属性(参见大写的P
)。它不是实例属性。
我在这里输入的是 pusher.log,但实际上我在测试中设置了 Pusher.log。
您看到的错误似乎不太可能是由 JavaScript 错误触发的。澄清 Pusher.log
应该在 JavaScript 上下文中设置,而不是在 Ruby 测试上下文中。以上是关于运行 UI 自动化测试时如何忽略/停止推送器从日志记录到控制台的主要内容,如果未能解决你的问题,请参考以下文章