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