0

質問は非常に明確です...ただし、機能の比較については質問していません(すでに多くの機能があります)。また、どちらを好むかについても質問していません。

私はドキュメンテーションを明確に好みます。ドキュメンテーションに使用されない場合でも、すべてにドキュメンテーションを使用します。しかし、私が疑問に思っているのは、ドクテストではできない、団結でできることはありますか?

4

4 に答える 4

6

doctestはコードをテストするためのものであるという誤解が広まっています。doctestは、ドキュメントをテストすることを目的としています。doctestは、ドキュメントが関数/クラス/モジュールが実際に実行していることと一致することをテストすることを目的としており、モジュールが進化するにつれてドキュメントのサンプルコードが廃止された場合に警告します。

doctestはコードのバグを明らかにするかもしれませんが、それはその主な目的ではありません(たとえば、コードの変更がunittestのテストケースコードのバグを解明するかもしれませんが、テストケースコードのテストはunitetestの主な目的ではありません)

それらが文書化に使用されない場合でも

docstringはhelp()関数によって自動的に抽出され、関数/クラス/モジュールのドキュメントになります。ドキュメントではなくdocstringを作成することはできません。モジュール/関数/クラスのユーザー(または数日後のあなた)は、関数/クラス/モジュールでhelp()を実行しようとして、ドキュメントが一連のコードであることに驚かされる可能性があります。

于 2011-04-02T11:48:19.870 に答える
3

いくつかのテストシナリオがあり、doctestsは単に十分にカバーしていません。Lieが指摘したように、doctestは包括的なテストソリューションではなく、ドキュメント内の単純なインタラクティブプロンプトスタイルの例(docstringを含む)が古くならないようにすることを目的としているため、問題ありません。

一方、実際の単体テストを作成すると、Pythonの能力を最大限に活用して、テストスイートの構成方法を決定できます(たとえば、継承を使用して、テストのセットアップと破棄の操作だけでなく、実際のテストメソッドも共有できます)。

doctestはその一部である可能性がありますが、完全なテストソリューションではありません(小規模で比較的自己完結型の操作を除く)。

testPython独自のテストスイート(パッケージ)を参照して、そこにあるいくつかのテストを確認することはおそらく価値があります。doctestがその役割を果たしますが、そのほとんどは。を使用して記述されてunittestいます。

于 2011-04-02T14:53:42.513 に答える
0

Doctestは、関数ごと(またはクラスごと)のテストに制限されています。ある関数の出力を取得して別の関数で試すなどのことはできません。「例」タイプのテストに最適です(つまり、この関数をどのように使用しますか?)

単体テストは、doctestよりも大きく、複雑になる可能性があります。

于 2011-04-02T10:44:47.227 に答える
0

一部のテストでは、データベースのセットアップや初期化などが必要になります。

これにより、doctestが作成される可能性があります。

  • 非常に冗長です(したがって、適切なドキュメントではありません)。と
  • doctestでは通常、関数またはクラスごとにデータベースを設定するため、おそらく非効率的です。それに比べて、単体テストでは、同じデータベースを使用して多くの関数やクラスをテストする方が簡単です。
于 2011-04-02T13:09:19.537 に答える