[python] setup.py で noseテストをする

明けましておめでとうございます。
年が明けても平時と変わらず、旅したりTAっぽいことしてみたりしますよズサーc⌒っ゚Д゚)っ

以前 setup.py を使用したpython開発をメモったと思いますが(こちら
今度は、これに+して nose を使用したテストをするのを追加してみようと思います。

そもそも nose とはなんぞ?というと、pythonでユニットテストを簡単に書くためのフレームワークです。
当方、TAやってるもののテストの書き方も知らないという有様だったので
いい加減ちゃんとした作法もおぼえねーと…と思っていたので、setup.pyと併せて基本的な使い方をメモってみました。

まず、基本的なフォルダ構成

project_treeB

プロジェクトルートは、モジュール名と同じ+setup.pyは前回書いた内容と同じです。
これは前回setup.pyについて書いた内容と同一です。

今回新しく追加したのが setup.cfg と tests フォルダです。

setup.cfg の中身はこんな感じです。
setup.cfg とは、 python setup.py XXXX とsetup.py コマンドを実行するときのオプションを記述しておくためのファイルです。
書き方は [] の中に setup.py を実行するときのコマンド、その下にオプションの値を書けばOK。
今回は nosetests コマンドを使用するので、それに関係するオプションを書いてます。
このオプションは
python setup.py nosetests -h で確認することが出来ます。
setup.py で使用するオプションは、ここにまとめて書いておけば setup.py XXXX するときにごちゃごちゃしなくて良いですね。

続いてテストするモジュール

中身は単純な足し算するコマンドです。

続いて tests フォルダ。
python setup.py nosetests すると、
nose は、この下にある test_XXXX.py ファイルにあるテストコマンドを探しだして実行していきます。
setup.pyとかで特に指定していなくても、この位置にtestsフォルダがあれば探してくれるのがGoodですね

テストコマンドの中身。
noseを使用してテストするときは nose.tools にある各種ツールを利用して「関数(あるいはクラス)が期待した動作をしているのか
テストする関数を書いていきます。

nose_result

準備が出来たら、 python setup.py nosetests を実行してみます。
実行すると、出て欲しくないエラーが出た場合 上の画像のようにエラーを表示してくれます。

基本は、pythonデフォルトで存在する「assert」を使用して、比較の結果を評価します。
それ以外だと、nose.toolsにある各種関数を利用します。

テスト前後に別の関数を実行する場合は
@with_setup(A,B)
で、前後の処理を指定できます。

意図したエラーがちゃんと出ているか の確認には
@raises(エラーの種類)
としておくと、引数で指定したエラーが出た場合はnosetestsのエラーとしては表示されません。

@timed(時間)
で、指定の時間を越える場合はエラーを表示

等々、デコレータを使用することでいろんなテストを書くことが出来ます。

こんな感じで、setup.py 基本のフォルダ構成+noseを使用したtestファイル作成をベースにしていくのが
わりとスタンダードな感じなんでしょうかね(汁

まだまだ勉強が必要だーズサーc⌒っ゚Д゚)っ

コメントを残す

メールアドレスが公開されることはありません。


*