Upgrade to Pro — share decks privately, control downloads, hide ads and more …

インフラエンジニアが考えてみた Mockの使いどころ

インフラエンジニアが考えてみた Mockの使いどころ

pythonのmockというテストフレームワークについて

E7c0cdb6e91562ab5995348cd2b2110e?s=128

gakuji tamaki

July 25, 2019
Tweet

Transcript

  1. インフラエンジニアが考えてみた Mockの 使いどころ 若手サーバエンジニア・サーバ業界関係者交流会2019 in Tokyo 株式会社エーピーコミュニケーションズ インフラエンジニア 玉木岳爾

  2. 1/18. はじめまして                        名前: 玉木岳爾  @gkzvoice 会社: 株式会社エーピーコミュニケーションズ 業務: ネットワーク環境構築の自動化 家:

    ギークハウス新宿
  3. 2/18.これからお話しすること ・苦労していること ・mockについて ・使いどころ ・サンプルコード ・留意点

  4. 3/18.苦労していること ②想定外の出力結果 ①機器へ都度接続

  5. None
  6. そこで、 mock の登場じゃ。

  7. 6/18.mockとは ・unittest.mock はPython におけるソフトウェアテストのためのライブラリ ・テスト中の システムの一部をモックオブジェクトで 置き換え、それらがどのように使われるかをアサートすることができる ・デモ動画 master/docs/demo/develmock.gif 出所:

    unittest.mock --- モックオブジェクトライブラリ — Python 3.7.4 ドキュメント
  8. 7/18.使いどころ コマンドの生成 コマンドを実行 正常結果取得 結果の判定 起きにくい エラーの再現 ってどうやれば?

  9. コマンドの生成 コマンドを実行 正常結果取得 結果の判定 8/18.使いどころ コマンドを実行 エラー結果取得 モジュールパス(<filename.class.method>)に patchをあててMockオブジェクトに差し替える @patch(<filename.class.method>,

    return_value=’Error Test’)
  10.            9/18.サンプルコード

  11. self.challenge( current_conts) return current_conts current_conts = 1 current_conts += 1

    conts % 2 == 0 return True return False challenge( self, conts) main() Sample Class current_conts = 2 continue break while True
  12. 11/18.サンプルコード(mockなし)

  13. 12/18.サンプルコード(mock)

  14. 13/18.サンプルコード(mock)

  15. None
  16. 15/18.留意点 テストの目的を意識しないと、 テストが”デキレース”に

  17. コマンドの生成 コマンドを実行 正常結果取得 結果の判定 16/18.使いどころ(再掲) コマンドを実行 エラー結果取得 モジュールパス(<filename.class.method>)に patchをあててMockオブジェクトに差し替える @patch(<filename.class.method>,

    return_value=’Error Test’)
  18. 17/18.まとめ ・mockはクラスやメソッドを差し替えるもの ・使いどころ  再現しにくい事象が起きたときにプログラムは機能するかどうか の検証 ・留意点  mockで差し替えるものばかりになっていないか

  19. おしまい ソースコード https://github.com/gkzz/mock_sample

  20.       補足

  21. 補足.業務内容 True/False? True/False? 切り戻し コマンド1 コマンド2 ネットワーク環境構 築の自動化!