我有2个项目,使用相同的API模块,这是我自己写的。这些API模块封装了从pypi库中导入的现有函数。
如果我必须为我的API编写单元测试-单元测试模块是否应该出现在使用我的API的每个项目中,或者是否应该有一个单独的项目来进行API测试?
API是万能的,所以从逻辑上讲,我会为API测试打开一个单独的项目,但如果这些项目在不拥有API测试项目的人之间传递,该怎么办?然后,如果API中内部导入函数的实现发生变化,则需要进行单元测试。
我想这个问题涉及到任何语言的API,但我的项目都是用Python编写的。
发布于 2019-05-03 20:05:35
我建议将代码和它的单元测试视为属于同一组件。例如,它们应该驻留在您的版本控制系统的同一存储库中。例如,如果代码发生变化,单元测试很可能也需要相应地进行调整。因此,将它们视为不同的组件没有太大的价值。
以您的两个项目中的示例和它们都使用的API为例: API及其测试形成一个组件。因此,API在概念上是独立于项目开发的。例如,如果在项目API的工作期间,您在P1中检测到一个bug,那么您可以直接在其存储库中修复API组件(可能首先扩展API的单元测试套件以捕获该bug),创建一个新版本的API组件,然后在P1中使用该新版本,但可能还会更新P2以使用新版本。
但是,如果您愿意,可以考虑将API组件以包的形式提供给不包含单元测试的客户端(您的项目P1和P2)。在任何情况下,API的开发都不会从P1或P2内部进行,而是直接在API的存储库中进行。
总结:不要把代码和它的测试分开放在单独的模块中。取而代之的是,将代码及其测试放入一个存储库,但与客户端分开。
https://stackoverflow.com/questions/51915622
复制