2016-04-22 14 views
0

私はTravisでPythonアプリケーションをテストしていますが、これはうまく機能しています。しかし、私は今、次のステートメントをテストしようとしています:この行が実行されるとTravisでテストされたPythonアプリケーションがWebブラウザをブロックし、Travisがタイムアウトします

webbrowser.open_new_tab(outputFile) 

を、トラヴィスは、ログに記録します。

«↑↓ませ出力がされていない表示< index.htmlを>

最後の10m0sで受信した場合、これは潜在的に停止したビルドまたはビルド自体に問題があることを示します。

ビルドは、外部アプリケーション( - おそらくFirefoxのブラウザを)産卵、このコードによってブロックされてから、私はトラヴィスを停止するにはどうすればよい

を終了していますか?次のように私は、テストを実行します。

- before_script: 
    - "export DISPLAY=:99.0" 
    - "sh -e /etc/init.d/xvfb start" 
    - sleep 3 # give xvfb some time to start 

か::

-before_install: 
    - "/sbin/start-stop-daemon --start --quiet --pidfile /tmp/custom_xvfb_99.pid --make-pidfile --background --exec /usr/bin/Xvfb -- :99 -ac -screen 0 1280x1024x16" 

、その後の呼び出し

xvfb-run --server-args="-screen 0, 1024x768x24" nosetests -s --nologcapture -A 'not slow' -v --with-id --with-xcoverage --with-xunit --verbose --cover-package=qgis2web 

は私も(https://docs.travis-ci.com/user/gui-and-headless-browsers/から)xvfbを呼び出して、次の代替の方法を試してみました直接テスト:

nosetests -s --nologcapture -A 'not slow' -v --with-id --with-xcoverage --with-xunit --verbose --cover-package=qgis2web 

"Can not connect to X"型のエラーが発生します。

webbrowserさんはどのようにしてブロックされますか?

編集: このテストはPythonでも書かれています。

+0

'command&'はケースの86%で動作します –

+0

@набиячлэвэлиь申し訳ありませんが展開できますか?私はあなたが何を意味するのか分かりません。 –

+0

'command'をノンブロッキングで実行するには、' command& 'を実行することができます。 –

答えて

0

docs for webbrowserを見ると、それは、Unixの下で

、グラフィカルなブラウザがX11の下で好ましいが、グラフィカルなブラウザが利用できなかったり、X11が利用できない場合は、テキストモードのブラウザが使用されますと言います。テキストモードブラウザが使用されている場合、ユーザーがブラウザを終了するまで、呼び出しプロセスはブロックされます。

これは、このコマンドが機能するように、ターゲットプラットフォーム(travis)にグラフィカルブラウザをインストールする必要があることを示しています。

ブラウザが制御不能のバックグラウンドで生成されている場合、有用なテスト結果を得るためのフィードバックはあまりないとも考えられます。だから、テストのためにwebbrowserモジュールをモックして、適切な関数が呼び出されているかどうかを確認したり、テスト環境でこの呼び出しをスキップしたりすることができます。

+0

私は 'webbrowser'文書でそれを読んでいましたが、TravisにはFirefoxがインストールされていると思いました。 webbrowserがXセッションを見つけることができないことを意味するxvfb-run経由でテストを実行する問題があるかどうかわかりません(「注:xvfbを直接実行しないでください。 - https://docs.travis-ci.com/user/gui-and-headless-browsers/#Using-xvfb-to-Run-Tests-That-Require-a-GUI)。つまり、ブロッキング・テキスト・ブラウザがデフォルトになっている可能性があります。しかし、私は他のTravisがxvfbメソッドを(同じリンクから)動作させるように勧められませんでした。 –

+0

私がテストしているところでは、ページをエクスポートするときに正しいユーザー指定のパスが使用されているかどうかを確認しています。テスト時に 'webbrowser'コールは実際には必要ありませんが、本番環境では実行しています。テストが*実行されていない場合は、コード内でコマンドを実行する方法がありますか?もしそうなら、Travisで走っているときに 'webbrowser'行をスキップすることができます。 –

+0

トラビスの環境変数が見つかりましたので、おそらく問題を回避するだけです。しかし、まだ答えを知りたいですか。 –

関連する問題