web-dev-qa-db-ja.com

Pythonでユニットテストを書く:どうやって始めますか?

私はPythonで最初の適切なプロジェクトを完成させました。そして今私の仕事はそれのためにテストを書くことです。

これが私が初めてプロジェクトをやった時なので、私がそれのためにテストを書くのは初めてです。

問題は、 どのように 私は始めますか?まったくわかりません。誰もが私がテストを書くことから始めるのに使用できるいくつかのドキュメンテーション/チュートリアル/リンク/本を私に指摘することができます(そして特に私はユニットテストを推測します)

このトピックに関するアドバイスは歓迎されます。

511
user225312

ユニットテストを使用するのが初めての方は、最も簡単な学習方法が最善です。それに基づいて、私は デフォルトのunittestモジュール よりも py.test を使うことを勧めます。

これら2つの例を見てください。これらは同じことをします。

例1(unittest):

import unittest

class LearningCase(unittest.TestCase):
    def test_starting_out(self):
        self.assertEqual(1, 1)

def main():
    unittest.main()

if __== "__main__":
    main()

例2(pytest):

def test_starting_out():
    assert 1 == 1

両方のファイルの名前がtest_unittesting.pyであると仮定して、どのようにテストを実行しますか?

例1(unittest):

cd /path/to/dir/
python test_unittesting.py

例2(pytest):

cd /path/to/dir/
py.test
95
Tim McNamara

無料のPython本 Dive Into Python には ユニットテストに関する章があります あなたが役に立つと思うかもしれません。

あなたが現代の慣習に従うなら、あなたはあなたがあなたのプロジェクトを書いている間おそらくテストを書くべきであり、あなたのプロジェクトがほぼ完成するまで待たないでください。

少し遅くなりましたが、今度は次の時間になります。 :)

70
Mark Byers

私の意見では、チェックアウトするのに適した3つの素晴らしいPythonテストフレームワークがあります。
unittest - モジュールはすべてのpythonディストリビューションに標準装備されています
- 単体テストのテストを実行でき、定型句が少なくなります。
pytest - 単体テストも実行し、定型句が少なく、レポートが改善され、優れた機能が多数追加されています

これらすべての良い比較を得るために、 http://pythontesting.net/start-here でそれぞれの紹介を読んでください。
備品に関する詳細な記事もあります。

37
Okken

unittest のドキュメントは始めるのに良い場所でしょう。

また、現在は少し遅れていますが、将来的にはプロジェクト自体の前または最中にユニットテストを書くことを検討してください。そのようにして、あなたが行っているときにテストするためにそれらを使うことができ、そして(理論的には)あなたがコード変更が既存のコードを壊さなかったことを確かめるために回帰テストとしてそれらを使うことができます。これはあなたにテストケースを書くことの完全な利益を与えるでしょう:)

34
Justin Ethier

unittest は標準ライブラリに同梱されていますが、nosetestsを推奨します。

"テストを簡単にするため、noseはunittestを拡張しています。"

私はまたあなたをお勧めしますpylint

"品質の悪いバグや兆候を探してPythonのソースコードを分析します。"

27
ssoler

他の人がすでに答えたように、ユニットテストを書くのは遅すぎますが、遅すぎません。問題は、コードがtestableかどうかです。実際、既存のコードをテストするのは簡単ではありません。これについての本さえあります。 レガシーコードを効果的に使用するキーポイント または 前駆体PDF を参照)。

ユニットテストを書くかどうかはあなたの電話です。退屈な作業になる可能性があることに注意する必要があります。これに取り組み、ユニットテストを学習するか、最初に受け入れ(エンドツーエンド)テストの作成を検討し、コードを変更するかプロジェクトに新しい機能を追加するときにユニットテストの作成を開始します。

8
philant

nosetestsは、Pythonでのユニットテストに最適なソリューションです。それはunittestベースのテストケースとdoctestsの両方をサポートしており、そしてあなたがちょうどあなたがそれを使い始めるのを簡単な設定ファイルで始めます。

3
Daniel Kluev