環境:
現在、Pythonで小さなプロジェクトに取り組んでいます。私は一般的に文書化されているいくつかのパブリックメソッドで私のクラスを構造化が、主に高レベルの概念を扱う(クラスのユーザーが知っていて、使用すべきか)、そしてたくさんの隠された(アンダースコアで始まる)を担当している方法を複雑または低レベルの処理。
コードに信頼を置き、その後の変更によって以前の動作が損なわれないようにするためには、テストが不可欠であることを知っています。
問題:
信頼できるベースでより高いレベルのパブリックメソッドを構築するために、私は一般的にプライベートメソッドをテストします。コードの変更によってリグレッションが発生したかどうか、どこで発生したかを確認する方が簡単です。これは、これらの内部テストがマイナーリビジョンで壊れる可能性があり、修正/交換する必要があることを意味します
しかし、私は、プライベートメソッドのユニットテストが、少なくとも異議のある概念であるか、またはより頻繁に悪い習慣と見なされていることも知っています。その理由:公の行動のみをテストする必要があります(参照)
質問:
私は次のベストプラクティスに注意を払い、理解したいと思います。
- プライベート/隠しメソッドでユニットテストを使用するのはなぜ悪いのですか(リスクは何ですか)?
- パブリックメソッドが低レベルおよび/または複雑な処理を使用できる場合のベストプラクティスは何ですか?
精度:
- それは質問する方法ではありません。Pythonにはプライバシーの真の概念がなく、隠されたメソッドは単にリストされていませんが、名前がわかっている場合に使用できます
- 私はプログラミングのルールとパターンを教えたことはありません。私の最後のクラスは80年代からです...私は主に試行錯誤とインターネットでの参照によって言語を学びました(何年もの間、Stack Exchangeが私のお気に入りです)