unittest
ライブラリを使用してモジュールをテストしています。これには、matplotlib
ライブラリを使用してグラフをプロットすることも含まれます。現時点では、グラフがプロットされるたびにテストが一時停止し、グラフを閉じると再開するだけです。どうすればこれを避けることができますか?ユニットテストを実行中にグラフをオフにする
答えて
私はmatplotlibのチュートリアルから、簡単なサンプルコードの後に私の答えをモデル化します:plot_graph.py
をテストするために、我々は、以下のモジュールを持っていると仮定しましょうhttp://matplotlib.org/users/pyplot_tutorial.html
:show
へ
import matplotlib.pyplot as plt
def func_plot():
plt.plot([1,2,3,4])
plt.ylabel('some numbers')
plt.show()
if __name__ == "__main__":
func_plot()
呼び出しが可能
from plot_graph import func_plot
from unittest.mock import patch
@patch("plot_graph.plt.show")
def test_plot(mock_show):
assert func_plot() == None
ご覧のとおり、にコールをパッチする必要があります。パッチや嘲笑についての詳細は、ドキュメントのhttps://docs.python.org/3/library/unittest.mock.htmlにあります。 通常
パッチを適用する場所についてセクション
は本当に便利です: https://docs.python.org/3/library/unittest.mock.html#where-to-patch最後にそこに同様の質問は、サイト上に既にある:、あなたはSOLIDから単一責任の原則を使用しようとすることができ代わりにハッキングのHow to run nosetests without showing of my matplotlib's graph?
これがテストで行われた場合はpyplot.show()
に電話しないでください。また、documentationは、show
関数の実験的なblock=False
キーワード引数を使用することを提案しています。
で更新されました。 'pyplot.show()'はテストではなく私のモジュールの一つで呼び出されます。 'block = False'は私のためには機能しません。私はそれが非難されたと思う。 – bluprince13
あなたのテストからpyplot.close( "all")を呼び出すと、そのトリックを行う可能性があります。 – Lukisn
とテスト可能なコードを書いて、あなたがこの種のトラブルに遭わないようにしてください。ちょっとしたアイデア...
- 1. リリースビルド中にXcodeユニットテストを実行する
- 2. VBAマクロの実行中に「すべて」をオフにする
- 3. アンドロイドモジュールの中にあるユニットテストを実行するには?
- 4. ユニットテスト中に実行するコードブロックを避けてください。
- 5. ユニットテスト実行中の特定の側面を無効にする
- 6. ユニットテストClojureを別のフレームで実行中
- 7. scssで反応ユニットテストを実行中
- 8. IntellijアイデアのGrails(J)ユニットテストを実行中
- 9. VSTSのビルドプロセス中にSQLユニットテスト(TSQLT)を実行できますか?
- 10. cakephp3でユニットテストを実行するには?
- 11. xcode UIテストの実行中にデバイスから無線をオフにする
- 12. バッチファイルの実行中にECHOがオフになりました
- 13. Tensorflowユニットテストを実行する
- 14. ユニットテストを並行して実行する
- 15. ユニットテスト中に
- 16. 円グラフ - データラベルをオフに移動
- 17. 純ユニットテスト実行
- 18. チェックボックスをすべてオフにして機能を実行する
- 19. ユニットテストを実行するときにカスタムhtmlを使用する
- 20. RakeによるRubyユニットテストの実行
- 21. ランタイム中に実行中にメインプログラムに含まれないコードを実行する
- 22. 実際にドーズモードをオフにする
- 23. UACをオフにしないでVistaでインストーラを実行する
- 24. ユニットテスト中にwinformを表示
- 25. ユニットテストをCMDまたはPythonで実行中IDLE
- 26. Pydevでユニットテストを実行する
- 27. テストランナー/モノ/モノデベロッパーのユニットテストを実行する
- 28. TFSビルドパイプラインでユニットテストを実行する(
- 29. ユニットテストでMainThreadを実行する
- 30. 各ビルド前のユニットテストを実行する
私の以前の答えは、 –