Cra*_*ney 2 python doctest unit-testing
假设我有一个 python 类,它的方法对调用者没有用(即它应该是私有的),但它有一些极端情况,所以我想对其进行健全性检查(即它应该进行单元测试)。
天真地,我期望我可以写一个文档测试:
class Thingy:
...
def __frob(self, val):
"""
>>> Thingy(...).__frob(-2)
1
"""
...
Run Code Online (Sandbox Code Playgroud)
但是当我这样做时,我收到一个错误:
AttributeError: type object 'Thingy' has no attribute '__frob'
Run Code Online (Sandbox Code Playgroud)
事后看来这是有道理的,但不是很方便。
除了将私有方法公开之外,是否有一种简单的方法来对私有方法进行文档测试?
Python 并没有真正的私有方法。双下划线名称被破坏;他们将类名(带有前导下划线)添加到他们的名字前面。这是因为他们的目标是帮助避免子类化时的名称冲突,而不是使它们对外部调用者来说是私有的。子类现在可以安全地定义自己的类Thingy.__frob(),并将其与父类分开。
因此,您可以在测试中手动应用相同的转换:
Thingy(...)._Thingy__frob(-2)
Run Code Online (Sandbox Code Playgroud)
例如添加_ClassName到方法名称的开头。
只是为了明确;该功能主要是为了避免子类使用的属性之间发生名称冲突。它也恰好适用于方法名称,因为方法本质上也是属性。
| 归档时间: |
|
| 查看次数: |
993 次 |
| 最近记录: |