Ada*_*tan 40 python doctest unit-testing
是否可以将Python的doctest概念用于类,而不仅仅是函数?
如果是这样,我应该在哪里放置doctests - 在类'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
Run Code Online (Sandbox Code Playgroud)
提前致谢,
亚当
Ari*_*Ari 62
您可以使用以下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()})
Run Code Online (Sandbox Code Playgroud)
Aar*_*paa 29
您错过了在文件底部实际运行doctests的代码:
class Test:
<snip>
if __name__ == "__main__":
import doctest
doctest.testmod()
Run Code Online (Sandbox Code Playgroud)
至于测试的位置:
doctest模块在文件中查找任何文档字符串并在其中执行任何嵌入代码,因此可以对类使用doctest.
至于将doctests放在类的docstring或构造函数中是否更好,我认为这取决于你正在记录什么.
如果docstring给出了类的一般概述以及如何使用它,那么我认为最好将它放在类中.
如果docstring具体是关于如何创建类的实例,那么它应该放在__init__
方法中.
请记住,doctests的目的主要是在文档中使用自我验证的示例代码,因此恕我直言,文档方面应该优先于测试方面.
编辑:
在上面的示例中,没有执行doctest的代码 - 运行python test.py -v
将执行仅定义类的主python代码.
您需要将其添加到文件的末尾:
if __name__ == "__main__":
import doctest
doctest.testmod()
Run Code Online (Sandbox Code Playgroud)
或者,如果您使用的是Python 2.6或更高版本,则运行它:
python -m doctest -v test.py
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
14766 次 |
最近记录: |