1

自動化されたテスト スクリプトを実行しているときに、次のような警告メッセージが表示されることがよくあります。

QFont::setPixelSize: Pixel size <= 0 (0)
QNetworkReplyImplPrivate::error: Internal problem, this method must only be called once.

私は周りを検索しましたが、これらの出力は私のテスト スクリプトとは何の関係もありません。それらは結果にまったく影響しません。したがって、私は彼らに会いたくありません。

これを解決する方法を探しているときに、stderr を特定のメッセージを除外するクラスにリダイレクトするコードを見つけました。ただし、このコードを使用しようとすると、スクリプトがまったく機能しません。

警告を抑制するクラス:

class WarningSuppressor

    # array to hold warnings to suppress
    SUPPRESS_THESE_WARNINGS = [
        'QFont::setPixelSize: Pixel size <= 0 (0)',
        'QNetworkReplyImplPrivate::error: Internal problem, this method must only be     called once.'
    ]

    class << self
        def write(message)
            if suppress_warning? message
                0
            end
        end

        def suppress_warning? message
            SUPPRESS_THESE_WARNINGS.any? { |suppressable_warning| message.chomp.include? suppressable_warning }
        end
    end
end

stderr をリダイレクトすることになっている構成コード:

Capybara.configure do |config|
    config.default_driver = :webkit
    config.javascript_driver = :webkit
    config.run_server = false # prevents Capybara from booting up a rack application automatically
    config.app_host = 'http://local.xxxxxxxx.com'

    # Sends output to a custom warning supressor
    config.register_driver :webkit do |app|
      Capybara::Driver::Webkit.new(app, stderr: WarningSuppressor)
    end

    # 10 second wait for ajax to finish
    config.default_wait_time = 10
  end

binding.pryブロックステートメントにa を挿入するappnilCapybara::Driver::Webkit存在します。

誰かがこれを修正するためのより良い方法/方法を持っていますか? 自動スクリプトの実行中に特定の警告が表示されないようにする方法はありますか?

4

0 に答える 0