Python开源项目的正常结构是什么?测试的推荐运行方式是什么?
我写了一些代码,想和大家分享,同时也想按照最佳实践来创建和维护它的结构。我打算把代码放在BitBucket上,现在在考虑应该怎么组织它。这样的结构好吗?
project_name/
lib/
test/
README
这样的话,源代码放在lib文件夹里,测试代码放在test文件夹里。这是Python项目的常见做法吗?我看到这种结构在Ruby项目中使用得比较多。另外,当我运行单元测试时,像这样做算不算好的实践呢:
set PYTHONPATH=`pwd`/lib
python test/a_test.py
1 个回答
1
我喜欢的做法是这样的:
- 使用distutils并创建一个setup.py文件。(当你有很多扩展类时,这个方法特别有用。)这样可以让你把模块安装到系统的所有地方或者虚拟环境的目录里。
- 如果你想进行认真的测试,但又不想太复杂,
doctest
是个不错的选择,因为它可以同时作为“简单的”文档(当你在测试中写下说明并解释它在做什么时)。你可以选择在代码的文档字符串中使用doctest进行测试,或者把测试放在一些单独的.txt文件里。
你可以通过在setup.py文件中扩展setup
命令,添加合适的cmdclass=...
来集成doctest。可以参考这个例子(CouchDB的设置),它展示了一种在setup.py中集成测试的解决方案。(它使用了单独的文件,里面有测试和实际的文档,这也是一种可能的做法)。