有时,模块或类的私有函数仅仅是功能的内部单元,尚待提取,可能值得对其进行测试。那么为什么不测试它们呢?如果提取它们,我们将在稍后为它们编写测试。那么,当它们仍属于同一文件时,为什么不立即编写测试呢?
展示:
首先,我写道module_a
。现在,我要为此编写测试。我想测试“私有”功能_private_func
。我不明白为什么我不为它编写测试,如果以后我仍然可以将其重构为它自己的内部模块,然后为它编写测试。
假设我有一个具有以下功能的模块(它也可以是一个类):
def public_func(a):
b = _do_stuff(a)
return _do_more_stuff(b)
_do_stuff
并且_do_more_stuff
是模块的“私有”功能。
我理解我们只应该测试公共接口,而不是实现细节的想法。但是,这是事情:
_do_stuff
并_do_more_stuff
包含该模块的大部分功能。它们中的每个都可以是不同“内部”模块的公共功能。但是它们尚未进化,并且足够大以至于可以提取为单独的文件。
因此,测试这些功能是正确的,因为它们是功能的重要单元。如果它们作为公共功能位于不同的模块中,我们将对其进行测试。那么,为什么还没有(或曾经)将它们提取到另一个文件时不对其进行测试呢?