3

多くのPythondoctestを含む大きなReStructuredTextファイルには、各doctestの前に実行したいtestsetupブロックと、一部のdoctestの前に実行したいいくつかのtestsetupブロックがあります。グループでこれを行う方法は知っていますが、testsetupブロックを実行する順序を指定する方法はありますか?

これがfoo.rstというファイルです。

.. testsetup:: *

  import sys
  sys.stderr.write('testsetup *' + chr(10))

.. testsetup:: my-group

  import sys
  sys.stderr.write('testsetup my-group' + chr(10))

.. doctest:: my-group

  >>> print 'test 1'
  test 1

実行すると、次のように表示されます。

testsetup my-group
testsetup *

逆の順序を強制する方法はありますか?グループ固有のセットアップの前に、最も広く適用可能なセットアップが実行されますか?

4

1 に答える 1

1

最新の sphinx ソース コード(「参考文献」を参照) を見るDocTestBuilder.test_docと、答えはノーです。不可能です。現時点では、すべてのテスト ブロックが順番に収集され、グループまたは特別なブロックに割り当てられadd_to_all_groupsます。この後、add_to_all_groupsコードは各グループのコードのリストに追加され、その結果、常にグループ固有のコードの後に​​実行されます。この動作を変更するためのパッチを作成するか、オプションとして提供する方がよいでしょう。

于 2012-11-14T05:48:11.483 に答える