我最近遇到了一个简单但讨厌的错误。 我有一个列表,我想找到它中最小的成员。我使用Python的内置min()。 一切工作很好,直到在一些奇怪的情况下列表是空的(由于奇怪的用户输入,我不能预料)。我的应用程序崩溃了ValueError(顺便说一句 - 没有在官方文档中记录)。Python在覆盖失败时对异常进行预测试
我有非常广泛的单元测试,我经常检查覆盖范围,以避免这样的惊喜。我也使用Pylint(所有东西都集成在PyDev中),我从不忽略警告,但是在我的用户之前我没有发现这个错误。
有没有什么我可以改变在我的方法避免这些类型的运行时错误? (这在编译时会被Java/C#捕获?)。
我正在寻找一些东西,而不是用大的尝试来包装我的代码。我还可以做些什么?有多少其他的Python函数构建隐藏这样的令人讨厌的惊喜?
要澄清一点:我不认为最小/最大应该返回None或0.在这种情况下,他们提出异常是有道理的。我只是担心我只是通过我的sw发现了一条隐藏的路线,我并不知道也没有测试过......而且代码与用户远离:这是一个自然语言旅行请求我提取所有数据。在某些时候,我试图从文本中找到100公里半径范围内最大的城市,但是用户进入了澳大利亚的一个机场,并在其旁边有0个城市......我的不好,当然...... – 2010-04-15 20:59:59
潜在答案:如果我没有将它传递给空列表导致它引发异常,请改进覆盖率以显示此行的部分覆盖范围!这样它会在覆盖报告中弹出,我会写一个测试来覆盖它。这是可行的吗? – 2010-04-16 06:07:27