前回
この記事で作ったサンプルとかを 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 を使ってみたい.