小编典典

如何在python类中检测重复的方法名称?

python

编写单元测试时,有时会剪切并粘贴测试,并且不记得更改方法名称。这将导致覆盖先前的测试,从而有效地隐藏它并阻止其运行。例如;

class WidgetTestCase(unittest.TestCase):

  def test_foo_should_do_some_behavior(self):
    self.assertEquals(42, self.widget.foo())

  def test_foo_should_do_some_behavior(self):
    self.widget.bar()
    self.assertEquals(314, self.widget.foo())

在这种情况下,只会调用后面的测试。除了直接解析原始源代码之外,还有没有办法以编程方式捕获这种错误?


阅读 179

收藏
2020-12-20

共1个答案

小编典典

如果对代码运行pylint,则当您覆盖另一种方法时,它将通知您:

例如,我运行了这个:

class A(object):
    def blah(self):
        print("Hello World!")

    def blah(self):
        print("I give up!")

此在线pylint检查器中。除了所有缺少的文档字符串等等,我得到了:

E: 5:A.blah: method already defined line 2
2020-12-20