已配置Kotest并行参数,Feature内Scenarios仍串行,如何解决?
解决Kotest同Feature下Scenarios并行执行问题
问题原因
你当前配置里,feature块的concurrency = 5是用来控制多个不同Feature之间的并行执行数量,而非同一个Feature内部的Scenarios并行。Kotest默认会串行执行同一个Feature下的所有Scenarios,所以即使全局开了并行,这两个场景还是会按顺序跑。
解决方案
要让同一个Feature内的Scenarios并行,需要在Feature块中设置parallelism属性,同时确保全局并行池足够支撑:
1. 修改Feature配置
将concurrency = 5替换为parallelism = 2(对应两个场景的并行需求):
@ExperimentalKotest class LoginTest : BaseTest() { init { feature("Login") { // 控制当前Feature内的Scenarios并行数量 parallelism = 2 beforeTest { //some config LoginHelper.login() } scenario("Login successful") { loginToApp() } scenario("Login unsuccessful") { failLoginToApp() withClue("Login unsuccessfull") { loginMessage.getFailMessage().shouldBeTrue() } } } } }
2. 确认全局并行池足够
你的ProjectConfig里parallelism = 3是全局可用的并行线程数,这个值要大于等于你在Feature中设置的parallelism,否则会限制并行执行的数量。如果后续需要同时跑更多测试,可以适当调大这个值。
额外注意事项
- 检查
BaseTest类是否存在覆盖并行配置的代码(比如禁用并行的逻辑),若有需移除。 - 确保测试代码线程安全:比如
LoginHelper或页面元素操作没有共享状态,否则并行执行可能导致测试失败。
内容的提问来源于stack exchange,提问作者Buzz
相关产品推荐
相关产品推荐

