11

doctestのスフィンクス拡張機能について何かが足りないと思います。

ドキュメントの典型的な例は次のとおりです。

.. doctest::

   >>> print 1
   1

1sphinxに出力(ここでは:)を自動的に 生成させる方法はありませんか?

私が理解している限り、実行することは可能です:

$ make doctest

これは、コードスニペットをテストし、実際の出力を期待される出力と比較する効果があります。たとえば、

.. doctest::

   >>> print 1
   3

1doctestは、期待していた間に取得したことを警告します3

代わりに、sphinxで実際の出力だけをdocstringまたは.rstファイルに挿入したいと思います。たとえば、次のようなものがある場合:

.. doctest::

    >>> print 1
    >>> print [2*x for x in range(3)]

make doctestオプションを指定して実行すると、docstringが次のように変更されます。

.. doctest::

   >>> print 1
   1
   >>> print [2*x for x in range(3)]
   [0,2,4]

きっと可能で、とても便利でしょう!

4

3 に答える 3

9

私は、あなたがやろうとしていることに対して強く (しかし親切に)忠告しなければなりません。

あなたが求めているのは、doctest モジュールの「テスト部分」に対するものです:

doctest モジュールは、インタラクティブな Python セッションのように見えるテキストを検索し、それらのセッションを実行して、示されているとおりに動作することを確認します。

これらのテストには、入力と予想される出力を記述し、予想される出力が実際の出力と一致するかどうかを Python に確認させる場合に有効な理由があります

Python に期待される出力を生成させると、 (ユーザー/作成者によって)期待されなくなるため、doctests が失敗することはなくなり、これらのテストは役に立たなくなります。

注:関数内にロジックがない場合 (if/else、while ループ、追加など)、それらをテストする必要はありません。また、テストはテスト ロジックを再現してはなりません。そうしないと、機能をテストできなくなります。

テスト駆動開発に関するこのビデオは非常に興味深いものでした。この議論について詳しく知りたい場合は、興味があるかもしれません。

于 2012-03-21T17:47:36.207 に答える
7

あなたが探していると思われるものをどのように達成できるかについての提案は次のとおりです。

Doug Hellmann は、 Writing Technical Documentation with Sphinx, Paver, and Cogという興味深い記事を書いています。Cogツールを使用してコード例を自動的に実行し、Sphinx で作成されたドキュメントに含めるために出力をキャプチャする方法を説明するセクションがあります。


特別なディレクティブでコードを実行し、出力をドキュメントに添付できる autorun と呼ばれる提供された Sphinx 拡張機能もあります。runblock

于 2012-03-22T18:58:33.523 に答える