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
520
インフラエンジニアが考えてみた 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
2.6k
#JTF2021W_D VimiumではじめるよちよちVimmerライフ / Vimmer beginners start with Vimium
gkzz
1
1.6k
What I Need to Do Before Promoting Automation
gkzz
0
49
StackstormというIFTTT的なツールをDockerコンテナに載せた小話
gkzz
0
780
QuickStartToGAS
gkzz
0
200
About Our House
gkzz
0
36
Other Decks in Programming
See All in Programming
Deep Dive 大規模システムアーキテクチャ/開発組織エンジニアリング / Deep Dive Large-Scale System Architecture, Development Organization Engineering
nrslib
15
2.9k
IntelliJ IDEA を知らなかった 自分に教えたい小ネタ集 / IntelliJ IDEA Hints for My Past Self
mackey0225
3
180
PHPでOfficeファイルを取り扱う! PHP Officeライブラリを プロダクトに組み込んだ話
hirobe1999
0
840
導入から5年が経って見えた Datadog APM 運用の課題
bgpat
2
540
9年開発を牽引して見えてきた、共通化すべきものと個別でつくるもの ~プログラム言語~
shinout
1
280
CircleCIを活用して AWSへの継続的デリバリーを 実践する
coconala_engineer
1
110
複雑なドメインを扱うプロダクトの探索フェーズではいつどのようにテストをするのか / How to testing during exploratory phase
boykush
2
150
Go1.22からの疑似乱数生成器について/go-122-pseudo-random-generator
convto
1
160
Laravel OpenAPIによる"辛くない"スキーマ駆動開発
kentaroutakeda
2
2.1k
PHP8の機能を使って堅牢にコードを書く
fendo181
6
2.6k
AppDeveloperCon 2024 EU: Building polyglot developer experiences in 2024
salaboy
0
380
Introduction for Open Source Swift Workshop
giginet
PRO
0
290
Featured
See All Featured
Stop Working from a Prison Cell
hatefulcrawdad
265
19k
The Art of Programming - Codeland 2020
erikaheidi
40
12k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
19
1.9k
Build your cross-platform service in a week with App Engine
jlugia
223
17k
Infographics Made Easy
chrislema
237
18k
How GitHub (no longer) Works
holman
301
140k
Typedesign – Prime Four
hannesfritz
36
2k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
1
1.2k
Building Better People: How to give real-time feedback that sticks.
wjessup
350
18k
Practical Orchestrator
shlominoach
180
9.7k
Reflections from 52 weeks, 52 projects
jeffersonlam
343
19k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
657
120k
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 ネットワーク環境構 築の自動化!