什么';它是Python开源项目的正常结构,是什么';运行测试的首选方式是什么?

什么';它是Python开源项目的正常结构,是什么';运行测试的首选方式是什么?,python,unit-testing,open-source,project-structure,Python,Unit Testing,Open Source,Project Structure,我写了一些代码,我想与大家分享,我想遵循创建/维护它的结构的最佳实践。我将在BitBucket上托管代码,现在我正在考虑如何组织它。这是一个好的结构吗 project_name/ lib/ test/ README 因此,源代码在lib中,测试在test中。Python项目就是这样做的吗?这是我在Ruby项目中看到的最常用的结构。另外,当我运行单元测试时,这样做是否被认为是良好的实践: set PYTHONPATH=`pwd`/lib python test/a_tes

我写了一些代码,我想与大家分享,我想遵循创建/维护它的结构的最佳实践。我将在BitBucket上托管代码,现在我正在考虑如何组织它。这是一个好的结构吗

project_name/
    lib/
    test/
    README
因此,源代码在lib中,测试在test中。Python项目就是这样做的吗?这是我在Ruby项目中看到的最常用的结构。另外,当我运行单元测试时,这样做是否被认为是良好的实践:

set PYTHONPATH=`pwd`/lib
python test/a_test.py

我喜欢的方法如下:

  • 使用distutils并创建setup.py文件。(这是最有用的 当您有很多扩展类时)。这将允许您安装 模块系统范围内或virtualenv目录中
  • 如果你想进行认真的测试,但要保持随意的一面,
    doctest
    是您想要的,因为它可以兼作“基本”文档 (当您记录测试并包括一些关于它所做工作的注释时)。 您可以使用doctest在代码的docstring中使用测试,也可以使用doctest 将测试保存在一些单独的.txt文件中
通过在setup.py文件中使用适当的
cmdclass=…
条目扩展
setup
命令,可以集成doctest。看见 对于一个在setup.py中集成测试的解决方案。(它使用单独的文件
同时具备测试和实际文件,这也是可能的)。

嗯,“pwd”不是跨平台的。关于测试中的Python Posits,请参见这个问题:“Todd Owen,是的,我知道PWD不是跨平台的,但是Python在运行脚本时会考虑它的值。