python - 登録 - django 計算




Pythonで単体テストを書く:どうすれば始めることができますか? (5)

nosetestsは、Pythonの単体テストのためのすばらしいソリューションです。 unittestベースのテストケースとdoctestの両方をサポートしており、簡単な設定ファイルで始められます。

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

私がプロジェクトを行ったのはこれが初めてなので、テストを書くのは今回が初めてです。

問題は、 どうやって始めるのですか? 私は全く考えていない。 誰でも私がテストを書くことから始めることができるいくつかのドキュメンテーション/チュートリアル/リンク/本を教えてもらえますか(そして私は特にユニットテストを推測しています)

このトピックについては、どんなアドバイスも歓迎されます。


unittestのドキュメントは、始めるのに適しています。

また、今はちょっと遅いですが、プロジェクト自体の前または中に単体テストを書くことを検討してください。 そうすれば、理論的には回帰テストとして使うことができ、コードの変更によって既存のコードが壊れていないことを検証することができます。 これはあなたにテストケースを書くの完全な利益を与えるだろう:)


他の人がすでに返答しているように、ユニットテストを書くのは遅いですが、遅すぎることはありません。 問題は、コードがテスト可能かどうかです。 確かに、既存のコードをテスト対象にするのは容易ではありませんが、これに関する書籍もあります: レガシーコードを使った効果的な作業要点またはPDFの先駆けを参照)。

今、ユニットテストを書くかどうかはあなたの呼び出しです。 あなたは単なる退屈な仕事であるかもしれないことに気づく必要があります。 単体テストの学習や受入れ(エンドツーエンド)テストの作成を最初に検討し、コードを変更したりプロジェクトに新しい機能を追加するときに単体テストを書くことができます。


無料のPythonブックDive Into Pythonには、 単体テストに関する章があります。

現代の実践に従えば、プロジェクトを書いている間にテストを書くべきであり、プロジェクトがほぼ終わるまで待つべきではありません。

今は遅いですが、今度は次回のことを知っています。 :)


あなたがunittestsを使うのが初めてであれば、最も簡単な学習方法がしばしばベストです。 それに沿って、私はデフォルトの py.test モジュールではなく、 py.test使用を推奨します

同じことをする次の2つの例を考えてみましょう。

実施例1(単位検定):

import unittest

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

def main():
    unittest.main()

if __name__ == "__main__":
    main()

実施例2(pytest):

def test_starting_out():
    assert 1 == 1

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

実施例1(単位検定):

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

実施例2(pytest):

cd /path/to/dir/
py.test






testing