仅测试Python中受影响的代码

Ces*_*ami 12 python testing

我一直在研究一个包含大量测试的相当大的Python项目.

应用程序的某些特定部分需要进行一些CPU密集型测试,而我们在提交之前测试所有内容的方法仍然有意义.

我们采用了基于标签的选择性测试方法.问题在于,随着代码库的增长,维护所述标记方案变得有些麻烦,我想开始研究是否可以构建更智能的东西.

在以前的工作中,测试系统只测试了受提交更改影响的代码.

好像Mighty Moose采用了类似的CLR语言方法.使用这些作为灵感,我的问题是,在Python项目中进行智能选择性测试有哪些替代方案(如果有的话)?

如果没有,那么构建类似的东西会有什么好的初始方法?

rob*_*cox 2

自动对应用程序的某些部分进行选择性测试的想法听起来确实很有趣。然而,感觉使用静态类型语言更容易实现这一点,但考虑到 Python 的动态特性,要获得能够可靠地检测受给定提交影响的所有测试的东西可能需要花费大量时间。 。

当阅读您的问题并抛开选择性测试的想法时,想到的方法是能够对测试进行分组,以便您可以单独执行测试套件,从而启用许多有用的自动化测试执行策略,从而缩短反馈时间循环如:

  • 在不同机器上并行执行单独的测试套件
  • 在构建管道的不同阶段运行测试
  • 在每次提交上运行一些测试,在夜间构建上运行其他测试。

因此,我认为您使用标签将测试划分为不同“组”的方法是一种明智的方法,尽管正如您所说,对于大型测试套件来说,这些管理变得很困难。鉴于此,可能值得花时间构建工具来帮助管理测试套件,特别是标签的管理。这样的系统可以通过从以下方面收集信息来构建:

  • 测试结果输出(通过/失败、执行时间、记录输出)
  • 代码覆盖率输出
  • 源码分析

祝你好运,这绝对是您正在尝试解决的一个有趣的问题,希望其中一些想法对您有所帮助。