是否可以将Python的doctest概念用于类,而不仅仅是函数?
如果是这样,我应该把doctest放在哪里--放在类的docstring上,还是放在构造函数的docstring上?
为了澄清,我正在寻找类似这样的东西:
class Test:
"""
>>> a=Test(5)
>>> a.multiply_by_2()
10
"""
def __init__(self, number):
self._number=number
def multiply_by_2(self):
return self._number*2提前谢谢你,
亚当
发布于 2010-04-25 20:45:28
您缺少实际运行文件底部的doctest的代码:
class Test:
<snip>
if __name__ == "__main__":
import doctest
doctest.testmod()至于把测试放在哪里:
发布于 2010-10-15 02:02:15
可以使用extraglobs参数,而不是在每个方法中实例化对象:
class Test:
def multiply_by_2(self):
"""
>>> t.multiply_by_2()
10
"""
return self._number*2
if __name__ == '__main__':
import doctest
doctest.testmod(extraglobs={'t': Test()})发布于 2010-04-25 20:36:56
doctest模块在文件中查找任何docstring并执行其中的任何嵌入代码,所以可以对类使用doctest。
至于将doctest放在类的docstring中还是放在构造函数中更好,我认为这取决于您到底记录了什么。
如果文档字符串给出了类的一般概述以及如何使用它,那么我认为最好将它放在类中。
如果文档字符串专门说明如何创建类的实例,那么它应该放在__init__方法中。
请记住,doctest的目的主要是让文档中的示例代码自我验证,所以我认为文档方面应该优先于测试方面。
编辑:
在上面的示例中,没有执行文档测试的代码--运行python test.py -v将执行主要的python代码,它只是定义了类。
您需要将以下内容添加到文件的末尾:
if __name__ == "__main__":
import doctest
doctest.testmod()或者,如果您使用的是Python 2.6或更高版本,请使用以下命令运行它:
python -m doctest -v test.pyhttps://stackoverflow.com/questions/2708178
复制相似问题