2015-12-09 166 views
0
import doctest 

def create_grid(size): 
    grid = [] 
    for i in range(size): 
     row = ['0']*size 
     grid.append(row) 
    """ 
    >>> create_grid(4) 
    [['0', '0', '0', '0'], ['0', '0', '0', '0'], 
    ['0', '0', '0', '0'], ['0', '0', '0', '0']] 
    """ 
    return grid 

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

运行上面python Test_av_doctest.py -v提供了以下消息:文档测试不运行测试,

2 items had no tests: 
    __main__ 
    __main__.create_grid 
0 tests in 2 items. 
0 passed and 0 failed. 
Test passed. 

为什么会出现此错误的任何想法?

+0

你能提供更多的细节吗?你的整个python文件是什么样的?你在使用'doctest.testmod'吗?或者你使用'doctest.testfile'并将它指向上面的文本文件? – Colin

回答

0

问题是您的doctest格式的字符串不是文档字符串。

Which docstrings are examined?

The module docstring, and all function, class and method docstrings are searched.

如果您将函数定义下面的测试字符串,它会成为一个函数文档字符串,因此将通过doctest针对性:

def create_grid(size): 
    """ 
    >>> create_grid(4) 
    [['0', '0', '0', '0'], ['0', '0', '0', '0'], 
    ['0', '0', '0', '0'], ['0', '0', '0', '0']] 
    """ 
    grid = [] 
    for i in range(size): 
     row = ['0']*size 
     grid.append(row) 

    return grid 

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

$ python Test_av_doctest.py -v 
... 
1 passed and 0 failed. 
Test passed. 
+0

谢谢!我意识到我应该在课堂上有这个功能。当我做与上面完全相同的东西时,它不起作用,唯一的区别是create_grid现在在类中。我得到以下错误:NAmeError:名称'create_grid'未定义 – hamp

+0

如果您将函数“放入类中”,它将成为方法。您需要将其第一个参数设置为特殊的'self'属性,并在您的文档字符串中将其引用为'self.create_grid()'。我会详细阅读[Python类](https://docs.python.org/2/tutorial/classes.html)。 –