Enviar búsqueda
Cargar
Mock and patch
•
5 recomendaciones
•
2,504 vistas
Toru Furukawa
Seguir
Python mock ライブラリの紹介
Leer menos
Leer más
Tecnología
Denunciar
Compartir
Denunciar
Compartir
1 de 26
Descargar ahora
Descargar para leer sin conexión
Recomendados
ピンホールカメラモデル
ピンホールカメラモデル
Shohei Mori
MIRU2013チュートリアル:SIFTとそれ以降のアプローチ
MIRU2013チュートリアル:SIFTとそれ以降のアプローチ
Hironobu Fujiyoshi
Use After Free 脆弱性攻撃を試す
Use After Free 脆弱性攻撃を試す
monochrojazz
「R言語による Random Forest 徹底入門 -集団学習による分類・予測-」 - #TokyoR #11
「R言語による Random Forest 徹底入門 -集団学習による分類・予測-」 - #TokyoR #11
Koichi Hamada
[DL輪読会]Deep Learning 第5章 機械学習の基礎
[DL輪読会]Deep Learning 第5章 機械学習の基礎
Deep Learning JP
Define and expansion of cpp macro
Define and expansion of cpp macro
digitalghost
20190307 visualslam summary
20190307 visualslam summary
Takuya Minagawa
画像処理でのPythonの利用
画像処理でのPythonの利用
Yasutomo Kawanishi
Recomendados
ピンホールカメラモデル
ピンホールカメラモデル
Shohei Mori
MIRU2013チュートリアル:SIFTとそれ以降のアプローチ
MIRU2013チュートリアル:SIFTとそれ以降のアプローチ
Hironobu Fujiyoshi
Use After Free 脆弱性攻撃を試す
Use After Free 脆弱性攻撃を試す
monochrojazz
「R言語による Random Forest 徹底入門 -集団学習による分類・予測-」 - #TokyoR #11
「R言語による Random Forest 徹底入門 -集団学習による分類・予測-」 - #TokyoR #11
Koichi Hamada
[DL輪読会]Deep Learning 第5章 機械学習の基礎
[DL輪読会]Deep Learning 第5章 機械学習の基礎
Deep Learning JP
Define and expansion of cpp macro
Define and expansion of cpp macro
digitalghost
20190307 visualslam summary
20190307 visualslam summary
Takuya Minagawa
画像処理でのPythonの利用
画像処理でのPythonの利用
Yasutomo Kawanishi
The PubchemQC project
The PubchemQC project
Maho Nakata
Geometry Processingで学ぶSparse Matrix
Geometry Processingで学ぶSparse Matrix
Jun Saito
画像処理ライブラリ OpenCV で 出来ること・出来ないこと
画像処理ライブラリ OpenCV で 出来ること・出来ないこと
Norishige Fukushima
クラシックな機械学習の入門 8. クラスタリング
クラシックな機械学習の入門 8. クラスタリング
Hiroshi Nakagawa
画像局所特徴量と特定物体認識 - SIFTと最近のアプローチ -
画像局所特徴量と特定物体認識 - SIFTと最近のアプローチ -
MPRG_Chubu_University
深層学習フレームワークにおけるIntel CPU/富岳向け最適化法
深層学習フレームワークにおけるIntel CPU/富岳向け最適化法
MITSUNARI Shigeo
5分で分かる自己組織化マップ
5分で分かる自己組織化マップ
Daisuke Takai
条件付き確率場の推論と学習
条件付き確率場の推論と学習
Masaki Saito
論文読み会(DeMoN;CVPR2017)
論文読み会(DeMoN;CVPR2017)
Masaya Kaneko
趣味として絵を描き続けるために心がけていること(久しぶりに絵を描いても落ち込まないための絵のウォーミングアップ術)
趣味として絵を描き続けるために心がけていること(久しぶりに絵を描いても落ち込まないための絵のウォーミングアップ術)
kowa kowa
FOBOS
FOBOS
Hidekazu Oiwa
Sift特徴量について
Sift特徴量について
la_flance
論文紹介"DynamicFusion: Reconstruction and Tracking of Non-‐rigid Scenes in Real...
論文紹介"DynamicFusion: Reconstruction and Tracking of Non-‐rigid Scenes in Real...
Ken Sakurada
関数(&統計の続き)(人間科学のための基礎数学)
関数(&統計の続き)(人間科学のための基礎数学)
Masahiro Okano
HigherHRNet: Scale-Aware Representation Learning for Bottom-Up Human Pose Est...
HigherHRNet: Scale-Aware Representation Learning for Bottom-Up Human Pose Est...
harmonylab
ベイズモデリングと仲良くするために
ベイズモデリングと仲良くするために
Shushi Namba
マルコフ連鎖モンテカルロ法入門-1
マルコフ連鎖モンテカルロ法入門-1
Nagi Teramo
階層ベイズと自由エネルギー
階層ベイズと自由エネルギー
Hiroshi Shimizu
【Unity道場スペシャル 2017京都】スマホゲーム開発者なら知っておくべきチートのリスク&対策
【Unity道場スペシャル 2017京都】スマホゲーム開発者なら知っておくべきチートのリスク&対策
Unity Technologies Japan K.K.
[DL輪読会]Vision Transformer with Deformable Attention (Deformable Attention Tra...
[DL輪読会]Vision Transformer with Deformable Attention (Deformable Attention Tra...
Deep Learning JP
Ekmett勉強会発表資料
Ekmett勉強会発表資料
時響 逢坂
Unit test in android
Unit test in android
Tatsuya Maki
Más contenido relacionado
La actualidad más candente
The PubchemQC project
The PubchemQC project
Maho Nakata
Geometry Processingで学ぶSparse Matrix
Geometry Processingで学ぶSparse Matrix
Jun Saito
画像処理ライブラリ OpenCV で 出来ること・出来ないこと
画像処理ライブラリ OpenCV で 出来ること・出来ないこと
Norishige Fukushima
クラシックな機械学習の入門 8. クラスタリング
クラシックな機械学習の入門 8. クラスタリング
Hiroshi Nakagawa
画像局所特徴量と特定物体認識 - SIFTと最近のアプローチ -
画像局所特徴量と特定物体認識 - SIFTと最近のアプローチ -
MPRG_Chubu_University
深層学習フレームワークにおけるIntel CPU/富岳向け最適化法
深層学習フレームワークにおけるIntel CPU/富岳向け最適化法
MITSUNARI Shigeo
5分で分かる自己組織化マップ
5分で分かる自己組織化マップ
Daisuke Takai
条件付き確率場の推論と学習
条件付き確率場の推論と学習
Masaki Saito
論文読み会(DeMoN;CVPR2017)
論文読み会(DeMoN;CVPR2017)
Masaya Kaneko
趣味として絵を描き続けるために心がけていること(久しぶりに絵を描いても落ち込まないための絵のウォーミングアップ術)
趣味として絵を描き続けるために心がけていること(久しぶりに絵を描いても落ち込まないための絵のウォーミングアップ術)
kowa kowa
FOBOS
FOBOS
Hidekazu Oiwa
Sift特徴量について
Sift特徴量について
la_flance
論文紹介"DynamicFusion: Reconstruction and Tracking of Non-‐rigid Scenes in Real...
論文紹介"DynamicFusion: Reconstruction and Tracking of Non-‐rigid Scenes in Real...
Ken Sakurada
関数(&統計の続き)(人間科学のための基礎数学)
関数(&統計の続き)(人間科学のための基礎数学)
Masahiro Okano
HigherHRNet: Scale-Aware Representation Learning for Bottom-Up Human Pose Est...
HigherHRNet: Scale-Aware Representation Learning for Bottom-Up Human Pose Est...
harmonylab
ベイズモデリングと仲良くするために
ベイズモデリングと仲良くするために
Shushi Namba
マルコフ連鎖モンテカルロ法入門-1
マルコフ連鎖モンテカルロ法入門-1
Nagi Teramo
階層ベイズと自由エネルギー
階層ベイズと自由エネルギー
Hiroshi Shimizu
【Unity道場スペシャル 2017京都】スマホゲーム開発者なら知っておくべきチートのリスク&対策
【Unity道場スペシャル 2017京都】スマホゲーム開発者なら知っておくべきチートのリスク&対策
Unity Technologies Japan K.K.
[DL輪読会]Vision Transformer with Deformable Attention (Deformable Attention Tra...
[DL輪読会]Vision Transformer with Deformable Attention (Deformable Attention Tra...
Deep Learning JP
La actualidad más candente
(20)
The PubchemQC project
The PubchemQC project
Geometry Processingで学ぶSparse Matrix
Geometry Processingで学ぶSparse Matrix
画像処理ライブラリ OpenCV で 出来ること・出来ないこと
画像処理ライブラリ OpenCV で 出来ること・出来ないこと
クラシックな機械学習の入門 8. クラスタリング
クラシックな機械学習の入門 8. クラスタリング
画像局所特徴量と特定物体認識 - SIFTと最近のアプローチ -
画像局所特徴量と特定物体認識 - SIFTと最近のアプローチ -
深層学習フレームワークにおけるIntel CPU/富岳向け最適化法
深層学習フレームワークにおけるIntel CPU/富岳向け最適化法
5分で分かる自己組織化マップ
5分で分かる自己組織化マップ
条件付き確率場の推論と学習
条件付き確率場の推論と学習
論文読み会(DeMoN;CVPR2017)
論文読み会(DeMoN;CVPR2017)
趣味として絵を描き続けるために心がけていること(久しぶりに絵を描いても落ち込まないための絵のウォーミングアップ術)
趣味として絵を描き続けるために心がけていること(久しぶりに絵を描いても落ち込まないための絵のウォーミングアップ術)
FOBOS
FOBOS
Sift特徴量について
Sift特徴量について
論文紹介"DynamicFusion: Reconstruction and Tracking of Non-‐rigid Scenes in Real...
論文紹介"DynamicFusion: Reconstruction and Tracking of Non-‐rigid Scenes in Real...
関数(&統計の続き)(人間科学のための基礎数学)
関数(&統計の続き)(人間科学のための基礎数学)
HigherHRNet: Scale-Aware Representation Learning for Bottom-Up Human Pose Est...
HigherHRNet: Scale-Aware Representation Learning for Bottom-Up Human Pose Est...
ベイズモデリングと仲良くするために
ベイズモデリングと仲良くするために
マルコフ連鎖モンテカルロ法入門-1
マルコフ連鎖モンテカルロ法入門-1
階層ベイズと自由エネルギー
階層ベイズと自由エネルギー
【Unity道場スペシャル 2017京都】スマホゲーム開発者なら知っておくべきチートのリスク&対策
【Unity道場スペシャル 2017京都】スマホゲーム開発者なら知っておくべきチートのリスク&対策
[DL輪読会]Vision Transformer with Deformable Attention (Deformable Attention Tra...
[DL輪読会]Vision Transformer with Deformable Attention (Deformable Attention Tra...
Similar a Mock and patch
Ekmett勉強会発表資料
Ekmett勉強会発表資料
時響 逢坂
Unit test in android
Unit test in android
Tatsuya Maki
Kompira開発者が教えるジョブフローTips7選_Kompass発表資料20240306.pptx
Kompira開発者が教えるジョブフローTips7選_Kompass発表資料20240306.pptx
ManamiMaeda
勉強会force#4 Chatter Integration
勉強会force#4 Chatter Integration
Kazuki Nakajima
Ekmett勉強会発表資料
Ekmett勉強会発表資料
時響 逢坂
Pythonで始めるDropboxAPI
Pythonで始めるDropboxAPI
Daisuke Igarashi
Ansible入門...?
Ansible入門...?
shirou wakayama
Subprocess no susume
Subprocess no susume
Makoto Kishimoto
Pyramid入門
Pyramid入門
Atsushi Odagiri
Swift 2.0 で変わったところ「後編」 #cswift
Swift 2.0 で変わったところ「後編」 #cswift
Tomohiro Kumagai
Ruby test double
Ruby test double
Naotoshi Seo
Applicative functor
Applicative functor
Yuichi Adachi
Local php-100828 2
Local php-100828 2
Akio Ishida
ちょっと詳しくJavaScript 第2回【関数と引数】
ちょっと詳しくJavaScript 第2回【関数と引数】
株式会社ランチェスター
研究生のためのC++ no.2
研究生のためのC++ no.2
Tomohiro Namba
Continuation with Boost.Context
Continuation with Boost.Context
Akira Takahashi
「スピード」と「品質」を実現するPHP開発チームの取り組み~AngularJS+FuelPHP+AspectMock~
「スピード」と「品質」を実現するPHP開発チームの取り組み~AngularJS+FuelPHP+AspectMock~
leverages_event
「Windows 8 ストア アプリ開発 tips」 hokuriku.net vol.11 (2013年1月26日)
「Windows 8 ストア アプリ開発 tips」 hokuriku.net vol.11 (2013年1月26日)
Fujio Kojima
Perl 非同期プログラミング
Perl 非同期プログラミング
lestrrat
Task
Task
Shingo Nakamura
Similar a Mock and patch
(20)
Ekmett勉強会発表資料
Ekmett勉強会発表資料
Unit test in android
Unit test in android
Kompira開発者が教えるジョブフローTips7選_Kompass発表資料20240306.pptx
Kompira開発者が教えるジョブフローTips7選_Kompass発表資料20240306.pptx
勉強会force#4 Chatter Integration
勉強会force#4 Chatter Integration
Ekmett勉強会発表資料
Ekmett勉強会発表資料
Pythonで始めるDropboxAPI
Pythonで始めるDropboxAPI
Ansible入門...?
Ansible入門...?
Subprocess no susume
Subprocess no susume
Pyramid入門
Pyramid入門
Swift 2.0 で変わったところ「後編」 #cswift
Swift 2.0 で変わったところ「後編」 #cswift
Ruby test double
Ruby test double
Applicative functor
Applicative functor
Local php-100828 2
Local php-100828 2
ちょっと詳しくJavaScript 第2回【関数と引数】
ちょっと詳しくJavaScript 第2回【関数と引数】
研究生のためのC++ no.2
研究生のためのC++ no.2
Continuation with Boost.Context
Continuation with Boost.Context
「スピード」と「品質」を実現するPHP開発チームの取り組み~AngularJS+FuelPHP+AspectMock~
「スピード」と「品質」を実現するPHP開発チームの取り組み~AngularJS+FuelPHP+AspectMock~
「Windows 8 ストア アプリ開発 tips」 hokuriku.net vol.11 (2013年1月26日)
「Windows 8 ストア アプリ開発 tips」 hokuriku.net vol.11 (2013年1月26日)
Perl 非同期プログラミング
Perl 非同期プログラミング
Task
Task
Más de Toru Furukawa
Twitter 広告と API を組み合わせたインタラクティブなキャンペーン
Twitter 広告と API を組み合わせたインタラクティブなキャンペーン
Toru Furukawa
My client wanted their apps synced, and I made it with Go
My client wanted their apps synced, and I made it with Go
Toru Furukawa
Introduction to Python 3.4 as of beta 1
Introduction to Python 3.4 as of beta 1
Toru Furukawa
Test Failed, Then...
Test Failed, Then...
Toru Furukawa
おまえらこのライブラリ使ってないの? m9 (2013-07)
おまえらこのライブラリ使ってないの? m9 (2013-07)
Toru Furukawa
Trying Continuous Delivery - pyconjp 2012
Trying Continuous Delivery - pyconjp 2012
Toru Furukawa
Python 3.3 チラ見
Python 3.3 チラ見
Toru Furukawa
Python32 pyhackathon-201011
Python32 pyhackathon-201011
Toru Furukawa
Django
Django
Toru Furukawa
Python 2.7
Python 2.7
Toru Furukawa
BPStudy#34 導入
BPStudy#34 導入
Toru Furukawa
Más de Toru Furukawa
(11)
Twitter 広告と API を組み合わせたインタラクティブなキャンペーン
Twitter 広告と API を組み合わせたインタラクティブなキャンペーン
My client wanted their apps synced, and I made it with Go
My client wanted their apps synced, and I made it with Go
Introduction to Python 3.4 as of beta 1
Introduction to Python 3.4 as of beta 1
Test Failed, Then...
Test Failed, Then...
おまえらこのライブラリ使ってないの? m9 (2013-07)
おまえらこのライブラリ使ってないの? m9 (2013-07)
Trying Continuous Delivery - pyconjp 2012
Trying Continuous Delivery - pyconjp 2012
Python 3.3 チラ見
Python 3.3 チラ見
Python32 pyhackathon-201011
Python32 pyhackathon-201011
Django
Django
Python 2.7
Python 2.7
BPStudy#34 導入
BPStudy#34 導入
Mock and patch
1.
Mock と patch
ふるかわとおる
2.
お前、誰よ? • ふるかわとおる
– @torufurukawa – bucho と呼ばれています • 株式会社バスキュール – 生放送テレビ番組と連動するサービス – エンジニア足りません
3.
ユニットテスト def test():
result = foo('wozozo') assert result == 'unko'
4.
依存先… def foo(name):
f = urlopen('http://%s.com/' % name) raw = f.read() d = json.loads(raw) 不確定 return d['data'] 確定的な 結果に依存
5.
ユニットテストしにくい例 • 戻り値が不確定
– 乱数 – 時刻 • セットアップがだるい – データベース – Web API
6.
テスト対象の外側を入出力として扱う
ここも入出力 よびだし HTTP req def foo(name): raw = urlopen('http://…') d = json.loads(raw) return d['data'] 戻り値 HTTP resp
7.
そこで mock モジュール
ですよ • Python 3.2 以前 PyPI – easy_install, pip, etc. • Python 3.3 標準ライブラリ – uniDest.mock
8.
1: 依存先オブジェクトを入れ替える テスト対象
urlopen テスト対象 mock
9.
with patch(...) で入れ替える from
unittest.mock import patch def test(): with patch('urllib.request.urlopen') as m: result = foo('wozozo')
10.
Mock オブジェクトと入れ替え >>> with
patch('urllib.request.urlopen') as m: ... from urllib.request import urlopen ... urlopen is m ... True
11.
Mock オブジェクトはアクセスし放題 >>> m
<MagicMock name='urlopen' id='1'> >>> m.read() <MagicMock name='urlopen.read()' id='2'> >>> m.hoge <MagicMock name='urlopen.hoge' id='3'>
12.
@patch で入れ替える @patch('urllib.request.urlopen') def
test(m): result = foo('wozozo')
13.
setUp と tearDown
で patch class MyTest(TestCase): def setUp(self): self.patcher = patch('...') self.m = patcher.start() def tearDown(self): self.patcher.stop()
14.
2: 依存先の呼び出し履歴を確認 テスト
テスト対象 mock
15.
call_count で呼び出し回数を確認 @patch('urllib.request.urlopen') def
test(m): result = foo('wozozo') assert m.call_count == 1
16.
call_args で引数を確認 @patch('urllib.request.urlopen') def
test(m): result = foo('wozozo') assert m.call_count == 1 assert (m.call_args == (('http://...',), {}))
17.
*args と **kw
が返ってくる m(a, b, x=1) ↓ m.call_args == ((a, b), {'x': 1})
18.
3: 依存先の挙動を定義する テスト
テスト対象 mock
19.
return_value で戻り値定義 >>> m.return_value
= 999 >>> m() 999
20.
urlopen().read() def foo(name):
f = urlopen('http://%s.com/' % name) raw = f.read() d = json.loads(raw) return d['data']
21.
return_value で戻り値定義 >>> m.return_value.meth.return_value
= 1 >>> m().meth() 1
22.
@patch('urllib.request.urlopen') def test_foo(m):
m.return_value.read.return_value = '…' result = foo('wozozo') assert m.call_count == 1 assert (m.call_args == (('http://…',), {})) assert result == '…'
23.
複雑な戻り値は side_effect >>> def
f(x, y): ... return x + y ... >>> m.side_effect = f >>> m(1, 2) 3
24.
side_effect に例外を指定 >>> m.side_effect
= TypeError >>> m() Traceback (most recent call last): ... TypeError
25.
mock でユニットテストしやすくなる テスト
テスト対象 mock
26.
より詳しい話 • 公式ドキュメント •
voluntas 「requests と mock を使ってみる」 hDp://voluntas.hatenablog.com/entry/20111124/1322069748 • ぁっぉ 「mock はこう使え」 hDp://d.hatena.ne.jp/atsuoishimoto/20120310/1331311730
Descargar ahora