Nightwatch:如何实现部分测试并行运行、部分测试顺序执行
测试顺序执行可行解决方案
- 标记分组执行
给所有需要串行执行的配置类测试统一打上自定义标记,比如JUnit的@Tag("sequence")、Pytest的@pytest.mark.sequence、TestNG的groups = "sequence"配置。执行测试时先单线程跑完全部带该标记的用例,确认配置状态符合预期后,再并行执行剩下的无标记普通功能测试。如果配置类测试都集中在固定的几个文件夹下,也可以直接按目录路径筛选,不需要单独打标记。 - CI/CD多阶段拆分
在持续集成流水线里把测试任务拆为两个独立阶段:第一阶段仅执行配置类测试对应的目录,强制设置为单线程顺序执行;第二阶段执行剩余功能测试目录的用例,开启多线程并行即可。如果不同配置类测试之间也有明确的先后执行要求,可以将第一阶段进一步拆分为多个子步骤按指定顺序运行。 - 测试框架原生能力控制
主流测试框架基本都支持指定范围的并发限制,不需要额外改造测试逻辑:- JUnit 5可给配置类测试添加
@Isolated注解,保证该类下所有用例不会和其他用例并行执行,也可单独给配置类测试目录配置junit.jupiter.execution.parallel.enabled = false关闭并行 - Pytest可搭配
pytest-ordering插件指定用例执行顺序,同时在配置文件中把配置类测试划分到非并发分组 - Jest等前端测试框架可在配置中给指定测试目录设置
maxWorkers: 1,强制该目录下的测试单线程运行
- JUnit 5可给配置类测试添加
- 全局锁隔离配置操作
如果是分布式并行测试场景,可在所有修改应用配置的操作逻辑前后加全局分布式锁,同一时间仅允许一个测试用例持有锁修改配置,操作完成释放锁后再执行下一个。该方案不需要调整测试执行顺序,仅通过保证配置操作的原子性避免状态冲突。
内容的提问来源于stack exchange,提问作者Aakash Gupta
相关产品推荐
相关产品推荐

