Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
インフラエンジニアが考えてみた Mockの使いどころ
Search
gkzz
July 25, 2019
Programming
1
600
インフラエンジニアが考えてみた Mockの使いどころ
pythonのmockというテストフレームワークについて
gkzz
July 25, 2019
Tweet
Share
More Decks by gkzz
See All by gkzz
MagicPodで始めるがんばらない回帰試験の自動化/Automated Regression Testing Journey with MagicPod
gkzz
0
3.1k
#JTF2021W_D VimiumではじめるよちよちVimmerライフ / Vimmer beginners start with Vimium
gkzz
1
1.8k
What I Need to Do Before Promoting Automation
gkzz
0
65
StackstormというIFTTT的なツールをDockerコンテナに載せた小話
gkzz
0
870
QuickStartToGAS
gkzz
0
250
About Our House
gkzz
0
38
Other Decks in Programming
See All in Programming
What we keep in mind when migrating from Serverless Framework to AWS CDK and AWS SAM
kasacchiful
1
130
開発を加速する共有Swift Package実践
elmetal
PRO
0
320
Rubyのobject_id
qnighy
6
1.3k
Amebaチョイス立ち上げの裏側 ~依存システムとの闘い~
daichi_igarashi
0
220
Meet BrowserEngineKit
swiftty
0
230
オートマトン学習しろ / Do automata learning
makenowjust
3
110
『ドメイン駆動設計をはじめよう』中核の業務領域
masuda220
PRO
5
870
Appleの新しいプライバシー要件対応: ノーコードアプリ プラットフォームの実践事例
nao_randd
1
460
Swiftコードバトル必勝法
toshi0383
0
150
Ruby Parser progress report 2024
yui_knk
2
180
大公開!iOS開発の悩みトップ5 〜iOSDC Japan 2024〜
ryunakayama
0
180
長期運用プロダクトの開発速度を維持し続けるためのリファクタリング実践例
wataruss
8
2.6k
Featured
See All Featured
It's Worth the Effort
3n
182
27k
Writing Fast Ruby
sferik
623
60k
The Language of Interfaces
destraynor
153
23k
Building an army of robots
kneath
302
42k
Navigating Team Friction
lara
183
13k
The Art of Programming - Codeland 2020
erikaheidi
48
13k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
41
6.4k
The Cost Of JavaScript in 2023
addyosmani
39
5.2k
The Power of CSS Pseudo Elements
geoffreycrofte
71
5.2k
Six Lessons from altMBA
skipperchong
26
3.3k
Statistics for Hackers
jakevdp
793
220k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
26
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 ネットワーク環境構 築の自動化!