我不久前开始编写Python代码,一切正常,但我一直在编写程序包时遇到问题。我想知道是否有“包验证工具”这样的东西。我知道,我可以启动一个REPL并开始导入模块但是......有更好的方法吗?是否有工具可以告诉我“你有这些可能的错误”?
或许中间还有一些东西:有没有办法测试Python的包结构?
一如既往,提前谢谢!
答案 0 :(得分:1)
如果您使用以下方式调用模块:
python -m module
Python将加载/执行模块,因此您应该捕获粗略的语法错误。此外,如果模块有一个块,如:
if __name__ = "__main__":
do_something()
它将被调用。对于一些小型自包含模块,我经常使用此块来运行测试。
鉴于Python非常动态,如果模块作者没有使用TTD,则很难检查其是否正确。这里没有银弹。有些工具会检查“code smells”并遵守标准(动态语言往往会产生大量linters)。
如果您喜欢IDE,那么像PyCharm这样的好IDE可以提供帮助。
这些工具可以提供帮助,但仍远不能保证静态语言,编译器可以在编译时捕获许多错误。例如,Go似乎被设计为具有非常迂腐的编译器。据说Haskell程序就像数学证明一样。
如果您来自具有强大编译时检查的语言,请放松一下。语言是一种“砸墙,看它是否坚持”。一些Python“男子气概”原则:
答案 1 :(得分:0)
没有工具来测试包结构本身,我不确定要测试什么。几乎任何结构都是有效的结构......
但是,如果您要分发模块,有一些工具可以帮助您测试软件包数据,它们可能很有用:
我安装了它们,并使用zest.releaser,它也有一些基本的健全性检查。但是这些都不会检查代码是否正常,因此它不会查找__init__
文件,例如。