Doctest:如何不将设置行算作测试?

Doctest: how to not count a setup line as a test?

import doctest
__test__['test'] = \
"""
>>> y = 1
>>> y == 1
True
"""

预期:0 次失败,1 次尝试

实际:0 次失败,2 次尝试

如何告诉 doctest 第一行只是设置,而不是测试?

不幸的是,似乎没有一个直接的选择来实现这一点。我的策略是在我的测试文件中标记设置行:

>>> y = 1  # SETUP
>>> y == 1
True

然后 运行 测试 doctest.testfile:

failures, tests = doctest.testfile("my_tests.txt")

然后我从 tests 中减去设置行数:

nb_setup = 0
with open(fichier_de_test) as data:
    for line in data:
        nb_setup += line.strip().endswith("# SETUP")
tests -= nb_setup

我很乐意阅读更优雅的答案。

如果您关心这个,请不要使用 doctest(使用 unittest 或类似的设置与测试分开的概念) .

就是说,如果它算作测试,那完全没有关系,因为如果您未通过 任何 测试,您的代码就会被破坏。 谁在乎你的代码是说 2/2 测试成功还是 1/1,你测试的真实结果是布尔值:100% 通过了吗?否则,您的测试 失败 。其他一切都无关紧要。