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% 通过了吗?否则,您的测试 失败 。其他一切都无关紧要。
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% 通过了吗?否则,您的测试 失败 。其他一切都无关紧要。