首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我如何测试Python私有方法(是的,我确实有理由测试它们)?

我如何测试Python私有方法(是的,我确实有理由测试它们)?
EN

Stack Overflow用户
提问于 2018-11-27 14:40:34
回答 1查看 5.1K关注 0票数 6

我正在寻找为private编写单元测试的最干净的方法。我知道通常您不想测试私有方法,但是我们继承了Python文件中一个巨大的庞然大物,我们需要将它重构成更可维护的模块。

我们不理解它的逻辑,但我们知道它是有效的,因此我们希望使用TDD来确保重构不会破坏代码,目前90%的代码位于私有方法中,模块做的太多,无法完全通过黑匣子测试来进行可靠的测试。

我完全希望我会编写一些测试,这些测试将在重构完成后被删除,但现在我希望能够插入一些私有方法来测试它们,以增强我的重构在过渡到更可维护(和更可测试)布局时没有破坏关键逻辑的信心。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-11-27 14:55:58

在Python中,“私有”方法只是开发人员的一个信号,表明它们应该是私有的。实际上,您可以访问每个方法。当您用两个下划线启动一个方法名时,Python会使用一些名称“魔术”来增加访问的难度。事实上,它并不像其他语言那样强制执行任何东西。

假设我们有以下课程:

代码语言:javascript
复制
class Foo:
 def __bar(self, arg):
     print(arg)
 def baz(self, arg):
     self.__bar(arg)

要访问“私有”__bar方法,请尝试如下:

代码语言:javascript
复制
f = Foo()
f._Foo__bar('a')

有关标识符的更多信息可以在文献资料中找到。

票数 16
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53502118

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档