编写单元测试时,有时会剪切并粘贴测试,并且不记得更改方法名称。这将导致覆盖先前的测试,从而有效地隐藏它并阻止其运行。例如;
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())
在这种情况下,只会调用后面的测试。除了直接解析原始源代码之外,还有没有办法以编程方式捕获这种错误?
如果对代码运行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