Python:检查运行时错误
我写了一个Python模块。运行python filename.py时,只检查语法错误。有没有工具可以检查运行时错误,比如把整数和字符串连接在一起之类的?
谢谢
Bala
更新: 这些脚本主要是用来在云端搭建一个Hadoop集群。我不太确定怎么写单元测试,因为一切都在云端运行。你可以把这些代码看作是遗留代码,我只是增加了一些日志记录和在几个地方加了一些额外的条件。
3 个回答
0
你可以试试 pyanalyze 这个工具。它可以在不运行程序的情况下,检测出可能会出现的运行时错误。
pip3 install pyanalyze
python3 -m pyanalyze file.py
2
你可以为你的模块写一个单元测试。这样一来,它就会运行你的代码,并且任何运行时错误(或者更好的是,测试失败)都会被报告出来。
如果你选择这个方法,http://docs.python.org/library/unittest.html 可能是个不错的起点。另外,正如Alex所说,你也可以在模块的底部放一些代码,这样当直接运行模块时,这些代码就会执行。这种方法更简单,可能是个更好的入门选择,不过如果你有很多模块,可能会想要一个更有结构的方法。
2
传统上,如果不写完整的单元测试或者文档测试(当然,写很多测试是最佳实践!),至少在每个模块里应该放一个 def main():
函数来运行它,并且在模块的最后加上
if __name__ == '__main__':
main()
这样的话,如果只是导入这个模块,main()
就不会影响其他代码的运行,但如果你把这个模块当作主脚本来运行,它就会执行。 当然,你需要在 main()
函数里实际调用模块中的代码,这样才能发现各种语义问题,比如你提到的类型错误。 这样做虽然不如写真正的单元测试和文档测试那么彻底,但至少可以让你开始尝试!