指定在doctest套件中运行testsetup块的顺序

时间:2012-10-06 21:22:28

标签: python python-sphinx docutils

在一个包含许多Python doctests的大型ReStructured Text文件中,我有一个我想在每个doctest之前运行的testsetup块,以及一些我想在一些doctests之前运行的testsetup块。我知道如何使用组来执行此操作,但有没有办法指定运行testsetup块的 order

这是一个文件,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 *

是否有某种方法可以强制执行相反的顺序,因此最广泛适用的设置是在特定于组的设置之前运行

1 个答案:

答案 0 :(得分:1)

查看latest sphinx source code(请参阅DocTestBuilder.test_doc),答案是否定的,不可能。目前,所有测试块都按顺序收集,并分配给一个组或一个特殊的add_to_all_groups。在此之后,add_to_all_groups中的代码将附加到每个组的代码列表中,结果是它将始终在特定于组的代码之后运行。看起来很容易编写补丁来改变这种行为,或者更好的是将其作为一个选项提供。