python - 指定在 doctest 套件中运行 testsetup block 的顺序

标签 python python-sphinx docutils

在一个包含许多 Python doctests 的大型 ReStructured Text 文件中,我有一个 testsetup block 我想在每个 doctest 之前运行,而一些 testsetup block 我只想在一些 doctests 之前运行。我知道如何对组执行此操作,但是有没有一种方法可以指定测试设置 block 的顺序运行?

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

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

最佳答案

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

关于python - 指定在 doctest 套件中运行 testsetup block 的顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12763992/

相关文章:

python - 如何使用 docutils 和 pygments 控制短/长标签名称?

python - 如何为新手安装 pip

python - $eq 语法无效 Mongo DB

python - 在 Python 中通过纬度计算地球的半径 - 复制公式

python - 单击以在循环中链接时元素不可见

python - 如何在 Sphinx 处理的文档字符串中表示单个参数或返回值的多种类型?

python-sphinx - 如何在模板中使用配置值?

python - 在 python-sphinx 中找不到 "Grammar.txt"

python - 全局包含在重组文本中

python - 通过 :ref:? 从 ReST 文档中提取文本 block