GitLab无需拆分文件夹,如何并行单文件夹内的Python单元测试?
实现方案:无需拆分文件夹即可并行运行folder1内的测试
完全可以做到,不需要手动拆分folder1的子文件夹,通过GitLab CI的矩阵配置结合Python测试框架的分片功能就能实现。具体步骤如下:
1. 调整GitLab CI的并行矩阵配置
修改原有的矩阵,为folder1单独分配x个worker实例,其他文件夹保持单实例运行:
Unit tests - components: ... variables: ... parallel: matrix: # 为folder1创建x个并行任务,每个任务对应一个分片ID - component: folder1 test_shard: [1, 2, 3] # 这里的数量x可按需调整,比如设为3个worker # 其他文件夹各用1个worker执行 - component: folder2 - component: folder3
2. 在测试执行脚本中添加分片逻辑
根据CI变量判断是否为folder1的任务,使用测试框架的分片参数拆分测试用例:
# 假设使用pytest作为测试框架(pytest 7.0+支持原生分片) if [[ "$component" == "folder1" ]]; then # 按分片ID和总分片数运行folder1的测试 python -m pytest $component/ --shard-id $test_shard --num-shards 3 else # 正常执行其他文件夹的全部测试 python -m pytest $component/ fi
补充说明
- 如果使用
unittest框架,可借助第三方工具(如unittest-parallel)实现分片,或自行编写逻辑按测试用例的哈希值分配到不同分片 - 矩阵中
test_shard列表的长度就是folder1使用的worker数量,可根据folder1的测试量灵活调整 - 整个过程无需修改folder1的目录结构,完全通过测试工具的分片能力实现并行
内容的提问来源于stack exchange,提问作者safex
相关产品推荐
相关产品推荐

