【snake】Section: 8 Testing and Code Quality
ここでは、テストコード作成方法についてまとめる
requirements.txt でテストに必要なものを準備する
pytest=プログラムをテストするためのフレームワーク。処理時間を測定など色々
pytest-cov=何パーセントの確認したかを表示する
flake8=Pythonプロジェクトのコードレビュー自動化
Getting Comfortable Writing Tests①
Dockerfileを確認すると、
しっかりrequirementとpipをするように指定されている。
Getting Comfortable Writing Tests② conftest.pyに関して
conftest.py はpytest起動時に読み込まれる特殊なモジュール
Fixtures: 一つのテストである。
test suite: 一つ一つのテストはテストケースという。それらすべてをまとめたものをテストスイートと呼ぶ。
python - In py.test, what is the use of conftest.py files? - Stack Overflow
sanakeeyesフォルダーを確認すると、新たにtestフォルダーができている。
(scope='session')とすることで、最初に1回だけ実行する。
次に(scope='function')とすることで、functionごとでテストを行う。
(settings_override=params)は上記のパラメーターが仕込めるようになっている。
ちなみにcreate_appは3行目でimportされている。
app.pyの18行目はif文で設定されている。
debugがfalseでtestingがtrueでapp_createを起動させる。
現時点では深くは解説しない。
app.test_client()の役割は、testを実行するtrigerになったり、
cookiesを保持する役割がるのでブラウザー操作してるようにテスト出来る。
Getting Comfortable Writing Tests③
3つのテストを行う。 以下のコードを実行する
$ docker-compose exec website py.test snakeeyes/tests
config/setting.pyにserver nameを記載していなかったのでエラーが発生する。
configのsettings.pyに SERVER_NAME = 'localhost:8000'を追記する。 すると
Investigating Our Code Test Coverage カーバー率を算出する
以下を実行する。
docker-compose exec website py.test --cov-report term-missing --cov snakeeyes
確かめるために、test.views.pyをコメントアウトする。
この状態で再度テストパイを実行して見る。
100%完了から97%に変わる。 snakeeyes/blueprints/page/views.pyを実際に確認して見ると。
先ほどコメントアウトした部分もterms.htmlなので、確認されていないということがよくわかる。
flake8は不要なので解説しない。