0

您好,我想知道这是否可能,如果可以,如何?从主线做 doctests 或类似的事情,而不是像 doctest docs 中描述的那样测试一个函数,即

"""
>>> 
Hello World
"""

if __name__ == "__main__":
    print "Hello"
    import doctest
    doctest.testmod()

这是能够针对文档字符串测试学生脚本的一部分,我发现这个代码片段允许我输入两者作为强项

import doctest
from doctest import DocTestRunner, DocTestParser
enter code here
def run_doctest(code, test):
    import doctest
    from doctest import DocTestRunner, DocTestParser
    code = code + '\n__dtest=__parser.get_doctest(__test, globals(), "Crunchy Doctest", "crunchy", 0)\n__runner.run(__dtest)\n'
    runner = DocTestRunner()
    parser = DocTestParser()
    exec code in {'__runner':runner, '__parser':parser, '__test':test}

这或多或少,但似乎并不理想,对任何一点的建议

4

1 回答 1

2

doctest不仅限于测试功能。例如,如果dt.py是:

'''
  >>> foo
  23
'''

foo = 23

if __name__ == '__main__':
    import doctest
    doctest.testmod()

然后,例如:

$ py26 dt.py -v
Trying:
    foo
Expecting:
    23
ok
1 items passed all tests:
   1 tests in __main__
1 tests in 1 items.
1 passed and 0 failed.
Test passed.

(如果没有-v,也可以正常工作,但是没有太多可显示的内容:只是沉默;-)。这是你要找的吗?

于 2010-08-14T02:11:23.543 回答