doctest调用哪些函数的顺序?
Order in which functions are invoked by doctest?
我很困惑为什么 doctest.testmod()
以奇怪的顺序调用测试函数
from doctest import testmod
def test_forwrite():
'''
>>> test_forwrite()
OP: Done
'''
write()
def test_forread():
'''
>>> test_forread()
OP: Done
'''
read()
if __name__ == "__main__":
testmod(verbose = True)
为什么不管其定义的 test_forread()
总是先测试的顺序。
这是因为 testmod 函数通过按 alphabetical(排序)顺序调用它们来测试给定 module/program 中的函数。
在您的情况下,test_forread()
将首先被调用,因为当按字母顺序排序时它先于 test_forwrite()
。
测试按名称排序。 test_forread
按字母顺序排在 test_forwrite()
之前。
来自doctest
source code for the DocTestFinder.find()
method:
# Sort the tests by alpha order of names, for consistency in
# verbose-mode output. This was a feature of doctest in Pythons
# <= 2.3 that got lost by accident in 2.4. It was repaired in
# 2.4.4 and 2.5.
tests.sort()
doctest.testmod()
uses DocTestFinder().find()
在您的模块中找到测试。
但是,您的测试永远不应依赖于 any 给定的顺序。编写独立的测试,这样您就可以 运行 单独或并行测试。
我很困惑为什么 doctest.testmod()
以奇怪的顺序调用测试函数
from doctest import testmod
def test_forwrite():
'''
>>> test_forwrite()
OP: Done
'''
write()
def test_forread():
'''
>>> test_forread()
OP: Done
'''
read()
if __name__ == "__main__":
testmod(verbose = True)
为什么不管其定义的 test_forread()
总是先测试的顺序。
这是因为 testmod 函数通过按 alphabetical(排序)顺序调用它们来测试给定 module/program 中的函数。
在您的情况下,test_forread()
将首先被调用,因为当按字母顺序排序时它先于 test_forwrite()
。
测试按名称排序。 test_forread
按字母顺序排在 test_forwrite()
之前。
来自doctest
source code for the DocTestFinder.find()
method:
# Sort the tests by alpha order of names, for consistency in
# verbose-mode output. This was a feature of doctest in Pythons
# <= 2.3 that got lost by accident in 2.4. It was repaired in
# 2.4.4 and 2.5.
tests.sort()
doctest.testmod()
uses DocTestFinder().find()
在您的模块中找到测试。
但是,您的测试永远不应依赖于 any 给定的顺序。编写独立的测试,这样您就可以 运行 单独或并行测试。