我正在寻找为python私有方法编写单元测试的最干净方法。
我知道通常您不想测试私有方法,但是我们继承了python文件的巨大庞然大物,需要将其重构为更可维护的模块。我们不了解它的逻辑,但知道它可以工作,因此希望使用TDD来确保我们的重构不会破坏代码,目前90%的代码位于私有方法中,并且该模块对可靠的测试完全是通过黑盒测试进行的。我完全希望我会写一些测试,一旦重构完成,这些测试将被删除,但是现在我希望能够插入一些私有方法来测试它们,以增加我对重构没有破坏关键逻辑的信心当我过渡到更具可维护性(和可测试性)的布局时。
答案 0 :(得分:2)
在python中,“私有”方法仅向开发人员签名,它们应为私有,实际上您可以访问每个方法。当您使用两个下划线开头的方法名称时,Python会使用一些“魔术”名称,以使其难以访问。实际上,它没有像其他语言那样强制执行任何操作。
假设我们有以下课程:
class Foo:
def __bar(self, arg):
print(arg)
def baz(self, arg):
self.__bar(arg)
要访问“专用” __bar方法,请尝试以下操作:
f = Foo()
f._Foo__bar('a')
有关标识符的更多信息,请参见docs
希望这就是您想要的。