当前位置:  开发笔记 > 编程语言 > 正文

Python代码组织问题:鸡蛋+软件包+构建+单元测试+ SVN

如何解决《Python代码组织问题:鸡蛋+软件包+构建+单元测试+SVN》经验,为你挑选了1个好方法。

我有几个共享常见模块的python项目.到现在为止,我已经......咳嗽......保留公共代码的多个副本并手动同步.但我显然更愿意做别的事情.

它现在在我看来,好像zc.Buildout可能是我需要的.我想我应该做的是将我系统的每个可重用组件放入一个单独的egg中,然后使用buildout将它们组装到项目中.

我也在想,对于任何特定的模块,我应该将单元测试放入一个单独的包或蛋中,这样我就不会在每个项目中安装组件的单元测试副本.我只想在我的库开发的地方进行单元测试,而不是在刚刚使用的地方.

所以也许我想要这样的东西

projects
  lib1
    tests
    code
  lib2
    tests
    code
  app1
    tests 
    appcode
  app2
    tests
    appcode

等等

app1和app2都是独立的应用程序,有自己的代码和测试,但也包括和使用lib1和lib2.和lib1/test,lib1/code,lib2/test,lib2code,app1,app2是分开的鸡蛋.这听起来不错吗?

但是,我现在感到困惑.我假设当我开发app1时,我希望buildout将lib1,lib2和app1的副本放到一个单独的工作目录中,而不是直接将这些库的副本放在app1下.但是,这如何与我的SVN源代码控制一起使用?如果使用buildout动态构造工作目录,它不能是一个实时SVN目录,我可以从中检查更改回存储库?

我是否误解了如何使用buildout?我会更好地采用完全不同的方法吗?如何在项目之间混合源代码控制和模块重用?

更新:感谢两位目前已回答此问题的人.我正在尝试更多这个.



1> Martijn Piet..:

不要将测试与代码分开,需要将两者紧密结合在一起.这并不是说测试占用了那么多的磁盘空间或任何内存!测试对您的图书馆用户非常有益.

对于库包,请在包中包含一个buildout.cfg和一个bootstrap.py文件,以便轻松运行测试.例如,参见plone.reload包 ; 请注意它如何使用zc.recipe.testrunner部件创建一个测试脚本,该脚本将自动发现您的测试并运行它们.这样您就可以确保始终测试您的库包!

然后,您的应用程序包只需要测试集成和特定于应用程序的代码.再次,将测试包含在包本身中,您希望在处理代码时不要忘记测试.使用zc.recipe.testrunnerbuildout中的部件来发现和运行这些部件.

最后但并非最不重要的是,使用mr.developer来管理您的包.使用mr.developer,您可以将包检出作为它们的工作,或者如果您不需要处理代码,则可以依赖已发布的版本.一个更大的项目将有许多依赖项,其中许多不需要你调整代码.使用mr.developer,您可以随意提取源代码并将其转换为开发阶段,直到您释放该代码为止,您可以再次解除签出.

要查看此类项目构建的实际示例,请参阅Plone核心开发构建.

sources.cfg文件包含各种软件包的SCM位置列表,但在您明确激活计划处理的软件包之前,通常会使用已发布的egg版本.checkouts.cfg列出默认签出的所有包裹; 这些软件包的更改将成为下一版Plone的一部分,尚未发布.如果您使用Plone,您需要这些,因为您不能忽略这些更改.并testing.cfg列出了需要测试,如果你想测试的Plone,一个大名单的所有软件包.

请注意,Plone的来源来自各种各样的地方.一旦开始使用buildout和mr.developer来管理包,您就可以随时随地提取源代码.

推荐阅读
LEEstarmmmmm
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有