Gradle命令行执行TestNG分组测试的语法咨询
解决Gradle动态指定TestNG分组执行的问题
我来帮你搞定这个动态指定测试分组的需求!你之前的问题在于smoketests任务是硬编码死了只执行smoke分组,没法通过命令行参数动态切换,我们只需要修改Gradle配置,让它支持读取命令行传入的项目属性来灵活指定测试分组。
步骤1:修改build.gradle的test任务配置
把原来的固定分组配置改成动态读取参数的形式,这样你可以直接用默认的test任务配合命令行参数执行不同分组:
test { useTestNG() { suites "src/test/resources/testng.xml" // 检查是否传入了testGroups参数,有就执行指定分组,没有就跑所有测试 if (project.hasProperty('testGroups')) { includeGroups testGroups } } }
如果希望默认情况下执行某个分组(比如默认跑regression),可以改成这样:
test { useTestNG() { suites "src/test/resources/testng.xml" // 默认执行regression分组,传入参数时覆盖 def targetGroups = project.findProperty('testGroups') ?: "regression" includeGroups targetGroups } }
步骤2:命令行执行指定分组
现在你就可以通过-P参数动态指定要执行的测试分组了:
- 仅执行smoke分组测试:
./gradlew clean test -PtestGroups="smoke"
- 仅执行regression分组测试:
./gradlew clean test -PtestGroups="regression"
- 同时执行smoke和regression分组(多个组用逗号分隔):
./gradlew clean test -PtestGroups="smoke,regression"
补充说明
按照你的TestNG用例:
Test1属于smoke组,执行smoke命令时会被运行Test2同时属于smoke和regression组,所以两个分组的命令都会触发它Test3属于regression组,执行regression命令时会被运行
这样配置后,你就不用单独维护多个测试任务,一个test任务就能灵活应对不同的分组执行需求啦!
内容的提问来源于stack exchange,提问作者Saikat...
相关产品推荐
相关产品推荐

