Python:检查运行时错误

Python:检查运行时错误,python,compilation,Python,Compilation,我编写了一个python模块。运行python filename.py,只检查语法错误。是否有一个工具,它也可以检查运行时错误,比如用字符串连接int等 谢谢你 巴拉 更新: 脚本主要是关于在云中设置hadoop集群的。我不确定如何编写单元测试,因为一切都在云中运行。您可以将代码视为遗留代码,我只是在一些地方添加了更多日志记录和一些额外条件 您可以为模块编写单元测试。这样,它将执行您的代码,并报告任何运行时错误(或者更好,测试失败) 如果你选择沿着这条路线走下去,这可能是一个很好的起点。或者,正

我编写了一个python模块。运行python filename.py,只检查语法错误。是否有一个工具,它也可以检查运行时错误,比如用字符串连接int等

谢谢你
巴拉

更新:
脚本主要是关于在云中设置hadoop集群的。我不确定如何编写单元测试,因为一切都在云中运行。您可以将代码视为遗留代码,我只是在一些地方添加了更多日志记录和一些额外条件


您可以为模块编写单元测试。这样,它将执行您的代码,并报告任何运行时错误(或者更好,测试失败)


如果你选择沿着这条路线走下去,这可能是一个很好的起点。或者,正如Alex所写,您可以将代码放在模块的底部,当模块直接运行时将执行这些代码。这是一种更方便、可能更好的第一种方法,尽管如果您有很多模块,您可能需要一种更结构化的方法。

您可以为您的模块编写一个单元测试。这样,它将执行您的代码,并报告任何运行时错误(或者更好,测试失败)


如果你选择沿着这条路线走下去,这可能是一个很好的起点。或者,正如Alex所写,您可以将代码放在模块的底部,当模块直接运行时将执行这些代码。这是一种更方便、可能更好的第一种方法,尽管如果您有很多模块,您可能需要一种更结构化的方法。

传统上,如果不编写完整的单元测试和/或文档测试(编写大量测试当然是最佳实践!),那么至少每个模块中都有一个
def main():
函数来练习它,并以

if __name__ == '__main__':
  main()

因此,
main()
不会妨碍刚刚导入的模块,但是如果您将模块作为主脚本运行,它将执行。当然,您需要从
main()
中实际练习模块中的代码,以便捕获各种语义问题,例如您提到的类型错误——以这种方式完成真正彻底的工作通常与编写真正的单元测试和文档测试一样困难,但您至少可以开始

传统上,如果不编写完整的单元测试和/或文档测试(编写大量测试当然是最佳实践!),那么至少在每个模块中放入一个
def main():
函数来执行它,并以

if __name__ == '__main__':
  main()

因此,
main()
不会妨碍刚刚导入的模块,但是如果您将模块作为主脚本运行,它将执行。当然,您需要从
main()
中实际练习模块中的代码,以便捕获各种语义问题,例如您提到的类型错误——以这种方式完成真正彻底的工作通常与编写真正的单元测试和文档测试一样困难,但您至少可以开始

脚本主要是关于在云中设置hadoop集群的。我不确定如何编写单元测试,因为一切都在云中运行。您可以将代码视为遗留代码,我只是在一些地方添加了更多日志记录和一些额外条件。我不确定如何编写单元测试,因为一切都在云中运行。您可以将代码视为遗留代码,我只是在一些地方添加了更多日志记录和一些额外条件;xyz.test()或者更确切地说:
如果uuuu name uuuu='uuuuuu main uuu':test()
我更倾向于统一使用名称
main
作为主脚本调用模块时执行的主函数,无论其用途如何(老式测试或其他),但我从未见过在样式指南中提到这个特定问题。GAE应用程序缓存也取决于它被称为
main
。坚持约定的另一个原因是,我认为main应该调用test(),因为我见过有人这样做:导入xyz;xyz.test()或者更确切地说:
如果uuuu name uuuu='uuuuuu main uuu':test()
我更倾向于统一使用名称
main
作为主脚本调用模块时执行的主函数,无论其用途如何(老式测试或其他),但我从未见过在样式指南中提到这个特定问题。GAE应用程序缓存也取决于它被称为
main
。坚持传统的另一个原因