3

在一个包含许多 Python doctest 的大型 ReStructured Text 文件中,我有一个我想在每个 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 回答