You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何在Jenkinsfile中为Squish测试Stage添加多个测试套件?

解决Jenkins SquishBuilder多测试套件执行问题

你遇到的核心问题是:直接把多个测试套件路径拼在单个testSuite参数里,SquishBuilder会把它当成一个完整的(不存在的)路径,而不是多个独立的套件。下面给你两种可行的解决方案:

方案1:使用插件支持的多套件参数(推荐)

如果你的Squish Jenkins插件版本支持,它提供了复数形式的testSuites参数,专门用来指定多个测试套件。写法如下:

step([
    $class: 'SquishBuilder', 
    squishConfig: 'Default', 
    testSuites: [
        "${env.WORKSPACE}/test_suites/suite_sample_module2",
        "${env.WORKSPACE}/test_suites/suite_sample_module1" // 替换成你的其他套件路径
    ]
])

这里用Groovy数组传递多个路径,插件会自动依次执行每个测试套件。

方案2:循环遍历执行单个套件

如果插件不支持testSuites参数,可以通过Groovy循环逐个调用SquishBuilder,实现批量执行:

// 先定义所有要执行的测试套件路径列表
def testSuiteList = [
    "${env.WORKSPACE}/test_suites/suite_sample_module2",
    "${env.WORKSPACE}/test_suites/suite_sample_module3",
    "${env.WORKSPACE}/test_suites/suite_sample_module4"
]

// 遍历列表,逐个执行每个套件
testSuiteList.each { suitePath ->
    step([
        $class: 'SquishBuilder', 
        squishConfig: 'Default', 
        testSuite: suitePath
    ])
}

这种方式灵活性更高,你还可以根据需要添加条件判断,比如只执行符合特定命名规则的套件。

为什么你的原写法无效?

你之前的代码把两个路径字符串直接拼接在一起:

testSuite: '''env.WORKSPACE + "/test_suites/suite_sample_module2" env.WORKSPACE + "/test_suites/suite_sample_module2"'''

这会生成一个包含空格和语法的无效路径,SquishBuilder会尝试查找这个奇怪的路径,自然无法识别为多个测试套件。

内容的提问来源于stack exchange,提问作者golu kashyap

火山引擎 最新活动