大丈夫じゃない。問題だ。 前の記事で書いたmockを使用した際に、2点ほどハマった。 importの仕方によりpatch対象を変える必要がある 以下のように外部ライブラリを使用しているモジュールをテストする場合を考える。(以降の例では、httpライブラリrequestsを外部ライブラリとして使用している。以降の記述の何点かは、requestsに依存した内容になっている。) このモジュール単体をテストするためには、外部ライブラリのクラスをモックすれば良い。
![そんなpatchで大丈夫か? (mockについてのメモ〜後編〜) - Qiita](https://cdn-ak-scissors.b.st-hatena.com/image/square/8bc37c36bc6fb0db884d1feaa9e94817d96178a8/height=288;version=1;width=512/https%3A%2F%2Fqiita-user-contents.imgix.net%2Fhttps%253A%252F%252Fcdn.qiita.com%252Fassets%252Fpublic%252Farticle-ogp-background-9f5428127621718a910c8b63951390ad.png%3Fixlib%3Drb-4.0.0%26w%3D1200%26mark64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTkxNiZoPTMzNiZ0eHQ9JUUzJTgxJTlEJUUzJTgyJTkzJUUzJTgxJUFBcGF0Y2glRTMlODElQTclRTUlQTQlQTclRTQlQjglODglRTUlQTQlQUIlRTMlODElOEIlM0YlMjAlMjhtb2NrJUUzJTgxJUFCJUUzJTgxJUE0JUUzJTgxJTg0JUUzJTgxJUE2JUUzJTgxJUFFJUUzJTgzJUExJUUzJTgzJUEyJUUzJTgwJTlDJUU1JUJFJThDJUU3JUI3JUE4JUUzJTgwJTlDJTI5JnR4dC1jb2xvcj0lMjMyMTIxMjEmdHh0LWZvbnQ9SGlyYWdpbm8lMjBTYW5zJTIwVzYmdHh0LXNpemU9NTYmdHh0LWNsaXA9ZWxsaXBzaXMmdHh0LWFsaWduPWxlZnQlMkN0b3Amcz1hNzQ0ZGZkNjY4OTI1ZTllNzJkMTI5MWM3NDU1OTlkNA%26mark-x%3D142%26mark-y%3D112%26blend64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTYxNiZ0eHQ9JTQwRkd0YXRzdXJvJnR4dC1jb2xvcj0lMjMyMTIxMjEmdHh0LWZvbnQ9SGlyYWdpbm8lMjBTYW5zJTIwVzYmdHh0LXNpemU9MzYmdHh0LWFsaWduPWxlZnQlMkN0b3Amcz1hYzVhODYzNmRlZGRhNTg1NDUxMWFkMWEyNzgyNjFkNQ%26blend-x%3D142%26blend-y%3D491%26blend-mode%3Dnormal%26s%3D8c983aac3366593f179ad69575d2a395)
(2016/10/04追記) 以下はPython3.5で確認。Python2.xではsuperを引数なしで呼べないためそのままでは実行できず、かつ実行結果も同等のものになるかは不明。 __new__と__init__ Pythonでは、__new__メソッド、__init__メソッドの2つのメソッドを実装したクラスを生成することで、そのクラスのインスタンス作成時に行う処理を定義することができる。 class A(object): def __new__(cls): print('new') return super().__new__(cls) def __init__(self): print('init') super().__init__() >>> A() new init <__main__.A object at 0x10da40050> 上記の例を見るに、__new__と__
AdventarのPython Advent Calendar 2015 25日目の記事です。 はじめに 本記事ではLuigiを用いたジョブパイプライン構築の簡単な実例として、Pytestのテスト再実行について記述する。 Luigiとは LuigiはPython製のジョブパイプライン構築ツールである。Luigiを用いることで、ジョブパイプライン構築に必要な以下の事柄をPythonコードで表現することができる。 タスクの実行 タスク間の依存関係 タスク実行結果の保存 HadoopやSparkのジョブ実行、データベースからの/へのデータロードなど、それなりに時間がかかるタスクを構成要素としたジョブパイプラインの構築をメインターゲットとしているようで、それらのツールと連携するためのモジュールはデフォルトでサポートされている(http://luigi.readthedocs.org/en/stab
日本語を扱うPythonプログラマ(with Python2)にとっての最大の天敵(過言)、UnicodeEncodeError。 昨日横の人がその餌食となり、その解決の手助けをしているうちに自分の中でPython2での文字列処理の方向が少し整理できた。(近いうちにPython3バージョンもまとめたい) 個人的結論 バイト文字列/ユニコード文字列のどちらを扱っているかを常に意識しておく。 (基本的に)プログラム内ではユニコード文字列を扱い、標準入出力とやり取りする際(ex. print)にはバイト文字列に変換する。 バイト文字列とユニコード文字列 バイト文字列は特定のエンコード方式(ex. utf-8)でエンコードされており、リテラルでは'あいう'のように表現する。一方、ユニコード文字列はUnicodeのコードポイントを並べたものであり、リテラルではu'あいう'のようにuをつける。 (py
>>> from selenium import webdriver >>> driver = webdriver.Firefox() ... FileNotFoundError: [Errno 2] No such file or directory: '/Applications/Firefox.app/Contents/MacOS/firefox-bin' 引数なしでwebdriver.Firefoxを呼んだ場合、各環境毎のデフォルトのパスが使用される。(Macの場合は/Applications/Firefox.app/Contents/MacOS/firefox-bin) (ref) https://github.com/SeleniumHQ/selenium/blob/master/py/selenium/webdriver/firefox/firefox_binary.py#L
Python その2 Advent Calendar 2015の11日目の記事です。 はじめに 本記事では、pytestを使用した際に得たTipsを逆引き形式でまとめている。 また以下のリポジトリに本記事の内容を含んだサンプルプロジェクト(Python3.5.0/pytest2.8.4で確認)を置いているため、合わせて参考にして頂ければ。 https://github.com/FGtatsuro/pytest_sample pytestの特徴 pytestはその名のとおり、Pythonで書かれたテストライブラリ。同様のライブラリとしては、unittestやnoseがある。 上記2つのツールに精通していないため、それらと比較した形での評価は下せないが、個人的には以下のような点が特徴的だと感じた。 独自のassertメソッド(ex. assertEquals)を定義せずに、Python標準のa
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く