前回
この記事で作ったサンプルとかを Github に上げた.
詳細は前回の記事とか見る.
実装メモ
テスト
ローカルホストに MySQL が動いていることが前提だけど, テスト用のデータを突っ込んで, 結果が JSON で返ってくることを確認するテストを書いてみた.
テストの実行は後述の invoke を利用.
$ invoke test ..... ---------------------------------------------------------------------- Ran 5 tests in 0.100s OK
本来であれば, mock を使うべきなのかもしれないけど, mock は次の機会に取っておこう.
テストの最初と最後だけ実行したい関数がある場合, 以下のように書くということを知った. (単純な setUp や tearDown だと, テストケース毎に呼ばれるので注意.)
... @classmethod def setUpClass(self): before = Before() before.prepare_db() before.insert_data() @classmethod def tearDownClass(self): after = After() after.drop_db() ...
pycodestyle
コードスタイルをチェックするようにした.
$ pycodestyle --first *.py tests/*.py $ echo $? 0
コードスタイル (PEP8) に準拠していないようなコードがあった場合には, 以下のように出力される.
$ invoke check tasks.py:11:1: E302 expected 2 blank lines, found 1
invoke
make や rake っぽいものが欲しいなと思っていたら invoke というモジュールがあるので使ってみた.
以下のようにタスクを書くだけ. 簡単に使える.
from invoke import run, task @task def test(context): try: run("python -m unittest tests.test_sample") except Exception: pass @task def check(context): try: run("pycodestyle --first *.py tests/*.py") except Exception: pass
以上
テストで mock を使ってみたい.