Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Speaker Deck
PRO
Sign in
Sign up for free
インフラエンジニアが考えてみた Mockの使いどころ
gakuji tamaki
July 25, 2019
Programming
1
330
インフラエンジニアが考えてみた Mockの使いどころ
pythonのmockというテストフレームワークについて
gakuji tamaki
July 25, 2019
Tweet
Share
More Decks by gakuji tamaki
See All by gakuji tamaki
#JTF2021W_D VimiumではじめるよちよちVimmerライフ / Vimmer beginners start with Vimium
gkzz
1
1.2k
What I Need to Do Before Promoting Automation
gkzz
0
25
StackstormというIFTTT的なツールをDockerコンテナに載せた小話
gkzz
0
470
QuickStartToGAS
gkzz
0
80
About Our House
gkzz
0
26
Other Decks in Programming
See All in Programming
Angular‘s Future without NgModules: Architectures with Standalone Components @enterJS
manfredsteyer
PRO
0
190
React NativeアプリにStorybook CSF3.0を導入しよう
texmeijin
0
160
Android Tools & Performance
takahirom
1
430
Oracle REST Data Service: APEX Office Hours
thatjeffsmith
0
710
Value and Record Types
hschwentner
0
550
I/O Extended 2022 in Android ~ Whats new in Android development tools
pluu
0
530
Why Airflow? & What's new in Airflow 2.3?
kaxil
0
110
1時間半で克服するJavaScriptの非同期処理/async_javascript_kokufuku
marchin1989
2
600
#JJUG_CCC 「サポート」は製品開発? - JDBCライブラリ屋さんが実践する攻めのテクニカルサポートとJavaエンジニアのキャリアについて -
cdataj
0
410
実践エクストリームプログラミング / Extreme Programming in Practice
enk
1
420
trocco® の品質を守る、とても普通な取り組み
kekekenta
0
350
競プロのすすめ
uya116
0
650
Featured
See All Featured
Pencils Down: Stop Designing & Start Developing
hursman
112
9.8k
jQuery: Nuts, Bolts and Bling
dougneiner
56
6.4k
Writing Fast Ruby
sferik
612
57k
The Invisible Side of Design
smashingmag
290
48k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
237
19k
How to name files
jennybc
40
61k
Designing on Purpose - Digital PM Summit 2013
jponch
106
5.6k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
10
3.3k
Git: the NoSQL Database
bkeepers
PRO
415
59k
Building Applications with DynamoDB
mza
83
4.7k
Bootstrapping a Software Product
garrettdimon
296
110k
The Web Native Designer (August 2011)
paulrobertlloyd
74
1.9k
Transcript
インフラエンジニアが考えてみた Mockの 使いどころ 若手サーバエンジニア・サーバ業界関係者交流会2019 in Tokyo 株式会社エーピーコミュニケーションズ インフラエンジニア 玉木岳爾
1/18. はじめまして 名前: 玉木岳爾 @gkzvoice 会社: 株式会社エーピーコミュニケーションズ 業務: ネットワーク環境構築の自動化 家:
ギークハウス新宿
2/18.これからお話しすること ・苦労していること ・mockについて ・使いどころ ・サンプルコード ・留意点
3/18.苦労していること ②想定外の出力結果 ①機器へ都度接続
None
そこで、 mock の登場じゃ。
6/18.mockとは ・unittest.mock はPython におけるソフトウェアテストのためのライブラリ ・テスト中の システムの一部をモックオブジェクトで 置き換え、それらがどのように使われるかをアサートすることができる ・デモ動画 master/docs/demo/develmock.gif 出所:
unittest.mock --- モックオブジェクトライブラリ — Python 3.7.4 ドキュメント
7/18.使いどころ コマンドの生成 コマンドを実行 正常結果取得 結果の判定 起きにくい エラーの再現 ってどうやれば?
コマンドの生成 コマンドを実行 正常結果取得 結果の判定 8/18.使いどころ コマンドを実行 エラー結果取得 モジュールパス(<filename.class.method>)に patchをあててMockオブジェクトに差し替える @patch(<filename.class.method>,
return_value=’Error Test’)
9/18.サンプルコード
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
11/18.サンプルコード(mockなし)
12/18.サンプルコード(mock)
13/18.サンプルコード(mock)
None
15/18.留意点 テストの目的を意識しないと、 テストが”デキレース”に
コマンドの生成 コマンドを実行 正常結果取得 結果の判定 16/18.使いどころ(再掲) コマンドを実行 エラー結果取得 モジュールパス(<filename.class.method>)に patchをあててMockオブジェクトに差し替える @patch(<filename.class.method>,
return_value=’Error Test’)
17/18.まとめ ・mockはクラスやメソッドを差し替えるもの ・使いどころ 再現しにくい事象が起きたときにプログラムは機能するかどうか の検証 ・留意点 mockで差し替えるものばかりになっていないか
おしまい ソースコード https://github.com/gkzz/mock_sample
補足
補足.業務内容 True/False? True/False? 切り戻し コマンド1 コマンド2 ネットワーク環境構 築の自動化!