web-dev-qa-db-ja.com

関数の例は単体テストであるべきですか?

python関数を書いて、この辞書のキーにあるすべての非英数字をアンダースコアに置き換えます。

言語に関する豊富な経験がないため、期待どおりに機能することを確認するために、いくつかの異なるサンプルを含むサンプル辞書を作成して、十分に機能することを確認しました。

これはユニットテストに入る種類のものですか?私がそれを働いたら、これを保存する意味はありますか?もしそうなら、テスト駆動開発は、サンプル辞書と期待される結果を最初に作成してから、関数を作成していましたか?

7
ADataGMan

これはユニットテストに入る種類のものですか?

もちろんです。これまでこの手動辞書を手動テストに使用したと思いますが、期待される結果の検証を必ずしも実装しなかったと思います。これは、単体テストにするためにここに追加する必要がある部分です。

私がそれを働いたら、これを保存する意味はありますか?

さて、あなたが書いた関数を保存し、おそらくそれを維持し、進化させる必要がある場合、そのような単体テストは非常に役に立ちます。機能を維持するつもりがない場合(機能が1度だけ使用され、その後は再び使用されないことがわかっているため、または来週に何か別のものに置き換えられることがわかっているため)に限り、テストデータを保持する価値があるかどうか疑わしい努力。

もしそうなら、テスト駆動開発は、関数を書く前に最初にサンプル辞書と期待される結果を作成していましたか?

大まかに言えば、はい。 TDDの「本」では、おそらく非常に小さな辞書(おそらく1つのキーのみ)から始め、検証を実装し、この最初のサンプルで正しく機能するまで関数を実装します。その後、

  • 辞書を拡張する
  • テストを実行します(失敗を確認するため)。
  • 関数を拡張して、拡張ディクショナリで機能させる
  • テストを実行する(テストが失敗しないことを確認するため)
  • 関数のクリーンアップ/リファクタリング
  • そしてテストを再度実行します(リファクタリングが何も破壊しなかったことを確認するため)。
9
Doc Brown

はいといいえ。はい、ユニットテストでの関数の使用が例になる可能性があるためです。ユニットテストのために別の目標があります。それは単に実証するだけですが、ユニットが仕様に従って機能することを証明します。それは全く同じものではありません

0
Simon