单元测试文件夹的好地方:位于源代码文件夹中,不在文件夹中还是...?

时间:2019-01-23 16:04:57

标签: python unit-testing

使用python开发软件项目,从生产的角度来看,tests文件夹在项目结构中的最佳做法是什么?将它们放置在src文件夹内还是外部真的很重要。当一切都自动化后,这个决定会以任何方式影响软件的生产吗?

-- my_project
  |---- src
  |---- tests
  |---- ... 

-- my_project
  +---- src
      |---- tests
  +---- ... 

1 个答案:

答案 0 :(得分:1)

我想提到的另一个选择是,将单元测试放入自己的项目中(每个生产测试项目/组件一个单元测试项目)。这三种不同选择的区别在于生产代码和测试代码的分离程度。

比较不同的方法时,我看到以下标准:

  • 在生产代码和测试代码之间保持明确的障碍:生产版本中不应包含测试代码。对于某些类型的软件,这不仅是一项建议,而且是一个严格的要求(例如,在安全关键软件中)-即使生产代码中的测试代码将是无效代码或无法访问。但是,在设计测试时,明确的障碍也可能是有利的:分离有助于首先关注公共API上的测试。而且,有时您希望将生产代码交付给客户,而不是单元测试代码,反之亦然(取决于合同)。显然,这是更容易实现的,将更多的生产代码和测试代码分开。

  • 生产代码和相关测试代码之间的相互可追溯性:将生产代码和测试代码一起版本化时,可追溯性很容易实现。然后,对存储库的典型提交可能包含生产代码更改和测试的相关更改。在这里将生产代码和测试放在不同的项目中将是一个缺点-除非您能以某种方式确保两个相关项目的版本都是一致的,以便始终清楚哪些版本属于同一版本。如果必须手动确保,则可能会失败。

考虑到这些标准,我个人会说,对于许多开发情况,您的第一个解决方案是最好的折衷方案-鉴于语言和工具环境允许以可接受的方式满足这些标准。但是,最后,您将不得不根据各自的开发环境进行判断。

关于集成测试的另一条注释,即使这超出了您的要求:集成测试不仅属于一个特定版本中的一个组件,而且属于特定版本中两个或多个组件的配置。因此,对于集成测试而言,将它们放入自己的项目中是否更合理。但是,这里还是有例外...