pytestを使ったユニットテスト

Share on Facebook0Tweet about this on TwitterShare on Google+0Share on LinkedIn0

こんにちは、kotaです。

最近Pythonでのユニットテストを行うようになりまして、何かいいテストランナーはないのかなと調べた結果、出力がわかりやすいpytestを使い始めました。
今回は、pytestの導入方法と、pytestでカバレッジを取得する方法、コードの変更を自動で検出してテストを再実行する方法を書きます。

1. 導入方法

まずpytestはpipでインストールします。

pytestだけでは、カバレッジの取得等はできないのでpytestのプラグインもインストールします。

テストカバレッジの取得にはpytest-covを使い、自動でテストを再実行させるにはpytest-xdistを使います。
これらのプラグインもpipでインストールできます。

pytestのプラグインは他にもたくさんありますが、今回はこの2つの使い方だけを説明します。
興味がある方は、記事の最後にプラグインがまとまったサイトのリンクを載せるのでそちらをご覧下さい。

2. テストの実行

テストの実行はコマンドラインから行います。

具体的には以下のようにテストの対象を指定します。

もし何も指定しなければ、カレントディテクリ配下にある全てのテストを実行します。
テストの対象となるのはtest_*.py や*_test.pyという名前のファイルやtest_から始まる関数等です。

3. オプションの指定

カバレッジの取得やテストの再実行などはオプションで指定します。

これ以外にも、様々なオプションがありますが、毎回指定するオプションがあればpytest.iniというファイルに以下のように記述することで、オプションの入力を省略できます。

短いですが、こんな感じで導入できるのと、unittestやnoseで書いたユニットテストにもpytestは使えるので、新しくどのテストツールを使おうか迷った時には一度試しに使ってみるのもいいのではないでしょうか。

最後に、参考にしたサイトを紹介します。