unittestとpytest
Javaでユニットテストを実施する場合はJUnit(多少バージョンの違いはあるものの)1択ですが、Pythonだとunittestとpytestのどちらかになります。
unittest | pytest | |
---|---|---|
インストール(pipなど) | 不要 | 必要 |
テストの実行結果 | OKの場合はOKのみ、NGの場合は行番号を表示 | テスト実行時の環境含め結果を表示 |
実行速度 | pytestと比較すると速い | unittestと比較すると遅い |
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の利用をお勧めします。