我一直在处理一个相当大的 Python 项目,其中包含许多测试。
应用程序的某些特定部分需要一些 CPU 密集型测试,而我们在提交之前测试所有内容的方法不再有意义。
从那以后,我们采用了基于标签的选择性测试方法。问题是,随着代码库的增长,维护上述标记方案变得有些麻烦,我想开始研究我们是否可以构建更智能的东西。
在之前的工作中,测试系统只测试受提交更改影响的代码。
好像Mighty Moose对 CLR
语言采用类似的方法。以此为灵感,我的问题是,Python
项目中的智能选择性测试有哪些替代方案(如果有的话)?
如果没有,构建类似东西的好的初始方法是什么?
最佳答案
对应用程序的某些部分进行自动化选择性测试的想法听起来确实很有趣。然而,使用静态类型语言感觉这会更容易实现,但鉴于 Python 的动态特性,获得能够可靠地检测受给定提交影响的所有测试的东西可能需要大量时间投资.
当阅读您的问题并抛开选择性测试的想法时,想到的方法是能够对测试进行分组,以便您可以隔离地执行测试套件,从而启用许多有用的自动化测试执行策略,这些策略可以缩短反馈循环,例如:
- 在不同机器上并行执行单独的测试套件
- 在构建管道的不同阶段运行测试
- 对每次提交运行一些测试,并在夜间构建中运行其他测试。
因此,我认为您使用标签将测试划分为不同“组”的方法是一种明智的方法,尽管正如您所说,对于大型测试套件,这些管理变得困难。鉴于此,可能值得花时间构建工具来帮助管理测试套件,尤其是标签的管理。可以通过从以下方面收集信息来构建这样的系统:
- 测试结果输出(通过/失败、执行时间、日志输出)
- 代码覆盖输出
- 源代码分析
祝你好运,这绝对是你正在尝试解决的一个有趣的问题,希望其中的一些想法对你有所帮助。
关于python - 仅在 Python 中测试受影响的代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13447627/