Pythonのユニットテストを考える(その1)

unittestとpytest

Javaでユニットテストを実施する場合はJUnit(多少バージョンの違いはあるものの)1択ですが、Pythonだとunittestとpytestのどちらかになります。

unittestpytest
インストール(pipなど)不要必要
テストの実行結果OKの場合はOKのみ、NGの場合は行番号を表示テスト実行時の環境含め結果を表示
実行速度pytestと比較すると速いunittestと比較すると遅い
unittestとpytestの比較

unittestの場合、JUnitを元に作成されたモジュールなのでオブジェクト指向ちっくな書き方になっています。

def test_myfunc(self):
    self.assertEquals(myfunc(20, 5), 100)

assertメソッドの名前で「等しい」「以上」などの判定を行うため、直感的ではありません。ただ、JUnitやPHPUnitなどに慣れている人は、今までと同様の書き方ができます。

def test_myfunc(self):
    assert myfunc(20, 5) == 100

対して、pytestはかなり直感的です。assert文で比較対象を演算子で書くことができるので、わかりやすいassertが記載できます。
ちなみに、pytestの場合はunittestと同じようにassertメソッドを使用することもできます。

結論としては、どうしてもテストの実行スピードを上げなければいけなかったり、インストールができないような環境でない限りは、pytestの利用をお勧めします。

PAGE TOP
タイトルとURLをコピーしました