You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert
テストを書くときに、外部の HTTP API を叩く処理が組み込まれている場合は、何かしらモックが必要です。 どう書くのがスマートなのか良くわからないので色々試してみる 準備するモノ python 2.7.x mock simplejson requests nose covarage テストのデファクト あまりまとまってるのがないので、まとめておきます。 テストランナーは nose または py.test nose はプラグインがステキ py.test はなにやら色々嬉しい事があるらしい モック/スタブは mock テストは unittest (unittest2) カヴァレッジは covarage ? これは良くわからず、基本 Jenkins に食べさせらるタイプで出力できればおk この辺が今のところデファクトでしょうか、ご意見お待ちしております。 mock patch を使うと綺麗に
pytestでは、monkeypatchを使ってmockを作成できます。 Monkeypatching/mocking modules and environments — pytest documentation モンキーパッチ/モックのモジュールと環境 今回は、monkeypatch.setattr()を使って、 プロダクションコードのメソッドや関数 Python標準モジュールのメソッド を差し替え(mock化)してみた時のメモです。 目次 環境 使い方 プロダクションコードのメソッドを差し替え 標準ライブラリを差し替え 差し替え対象モジュールをimportせずに差し替え 定数の差し替え 複数の引数を持つメソッドを差し替え プライベートメソッドの差し替え 複数の戻り値を持つメソッドの差し替え 例外を送出するように差し替え プロダクションコードがimportしているモジュールの属性を差し
tl;dr 作ったもの 知見 requests.get() を mock で置き換える S3 への put_object を moto で置き換える invoke コマンド Travis CI を使って, 複数の Python バージョンでテスト出来るようにする 以上 tl;dr inokara.hateblo.jp 前回の記事の続きというか, 前回, 突貫で作った Python スクリプトを自分なりに作り直してみました. スクリプトを作り直すにあたって, テストを書いたり, その上で Python 3 系の複数のバージョンでテストを Travis CI で回すようにしてみたり, モックを使ったり, 色々と経験出来たので覚書として残しておきたいと思います. 尚, あくまでも「自分なりに」なので, 誤り等あればご指摘頂けると幸いです. 作ったもの github.com 使い方とかは READ
Pythonのargparseモジュールを利用するとPythonスクリプトに渡された引数のチェックを良い感じにやってくれます。自動的にヘルプコマンドも作ってくれたりするので、コマンドラインツールを作るときにはかなり便利です。 今回はargparseによるコマンドライン引数のパースをunittests + Mockでテストしてみました。Pythonのバージョンは2系です。 完成形はこんな感じ↓ import unittest from mock import patch, Mock class ParserError(Exception): pass class ParserTestCase(unittest.TestCase): @patch('argparse.ArgumentParser.error') def test_parse_error(self, arg_error): ar
Pythonの標準ライブラリに含まれるunittest.mockモジュールの使い方メモ。patchのみ。 試したバージョンは、Python 3.5 テスト対象 main.py import subprocess def say(message): """echoコマンドでmessageを実行する """ return subprocess.call(['echo', message]) def say_hello(somebody): """「Hello, {somebody}!」と画面に表示する関数 """ message = "Hello, {}!".format(somebody) return say(message) if __name__ == '__main__': say_hello("tokibito") 実行すると次のようになる。 $ python main.py He
MagicMock は mock.Mock のサブクラスで、薄いラッパーです。 >>> from mock import Mock, MagicMock >>> issubclass(MagicMock, Mock) True >>> list(set(dir(MagicMock)) - set(dir(Mock))) ['_mock_set_magics'] MagicMock を使えば、クラスだろうがオブジェクトだろうがメソッドだろうが関数だろうが、何でもモックオブジェクトで置き換えて、その振る舞いを自由にシュミレートすることができます。 まず、一番シンプルにモックを使う方法は、直接 MagicMock オブジェクトを代入するやり方です。 models.py(置換対象クラス) import random class User(object): def __init__(self, na
隣の席の人がテスト強化週間とか抜かしていたので自分もちゃんと理解するために なるべくわかりやすく まとめてみようと思います。 この記事は 2015 tech-yuruyuru アドベントカレンダー - 15日目の記事です。 http://connpass.com/event/22759/ モックって何よ? mockは特定のオブジェクトの代理をしてユニットテストを円滑に進めるためのモジュールです。 python3.3からはビルトインに入りましたが、それ未満のバージョンではインストールが必要です。 以下のようにインストールしてください。 インストールしたmockを使う場合は単に import mock とすればよいのですが ビルトインmockを使う場合は、 from unittest import mock のようにして使うのが一般的です。 以降、この記事では無用な混乱を避けるため、mockの
最近、Mockライブラリ http://www.voidspace.org.uk/python/mock/ を使ってみたのでメモ。 このライブラリは、その性質上、動的にメソッドや属性を作成するケースが多く、普通のPythonライブラリのようにイントロスペクションに頼って使い方を調べるのは難しい。本気で使うならまじめにドキュメントを読み込む必要がある。 関数の置き換え テスト中に呼び出される関数をMockで置き換える例。ここでは、関数 myapp.utils.func1() を置き換える。 from mock import Mock import myapp.utils # myapp.utils.func1 を、常に100を返す関数に置き換える myapp.utils.func1 = Mock(return_value=100) 戻り値が定数でない場合は、Mock()にside_effec
The latest news from Google on open source releases, major projects, events, and outreach programs for early career developers. So you just finished writing a really sweet Python application, and now it's time to do some testing. Or wait, better yet, you're going to write the tests first, then write your application code. It's probably time to pick a mock object framework to make writing tests eas
Introduction A problem that frequently occurs when writing unit tests is how to test a unit in isolation from other classes. One solution to this problem is to create Mock Objects that mimic interface of the classes that the unit depends on. The Mock Object can then return canned values in response to method calls, or check that the expected methods are called with the correct arguments. Mock Obje
pMock has not been under active development since mid 2004. For other suitable mocking frameworks see the Cheescake info on python mock testing tools pMock is a Python module for testing Python code using mock objects. ... import pmock ... class InstrumentTest(unittest.TestCase): def test_low_quality_analysis(self): analyser_mock = pmock.Mock() analyser_mock.expects().analyse(pmock.eq("123")).will
# (c) 2006 Ian Bicking, Mike Beachy, and contributors # Licensed under the MIT license: http://www.opensource.org/licenses/mit-license.php r""" minimock is a simple library for doing Mock objects with doctest. When using doctest, mock objects can be very simple. Here's an example of something we might test, a simple email sender:: >>> import smtplib >>> def send_email(from_addr, to_addr, subject,
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く