You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Playwright Java项目中限制工作线程数量?

在Playwright Java中控制并行测试数量并指定运行测试用例

一、用JUnit 5配置(最常用)

1. 限制并行运行数量

直接在项目的src/test/resources/junit-platform.properties文件里添加以下配置,把3改成你需要的特定并行数:

# 开启并行执行
junit.jupiter.execution.parallel.enabled = true
# 默认采用并发模式
junit.jupiter.execution.parallel.mode.default = concurrent
# 使用固定并行数策略
junit.jupiter.execution.parallel.config.strategy = fixed
# 设置并行数量为3
junit.jupiter.execution.parallel.config.fixed.parallelism = 3

2. 只运行指定数量的测试

  • 给需要运行的测试用例打标签,比如添加@Tag("target-test")注解:
    import org.junit.jupiter.api.Tag;
    import org.junit.jupiter.api.Test;
    
    public class SampleTest {
        @Tag("target-test")
        @Test
        void testCase1() { /* 测试逻辑 */ }
    
        @Tag("target-test")
        @Test
        void testCase2() { /* 测试逻辑 */ }
    
        // 其他不需要运行的测试不加这个标签
    }
    
  • 然后用Maven命令运行时指定标签,同时带上并行数参数:
    mvn test -Dgroups=target-test -Djunit.jupiter.execution.parallel.config.fixed.parallelism=3
    

如果需要随机选N个测试,也可以写个简单脚本筛选测试类/方法,再把列表传给Maven的-Dtest参数。

二、用TestNG配置

1. 设置并行数量

修改testng.xml配置文件,在<suite>标签里指定线程数(即并行数):

<suite name="Playwright测试套件" parallel="tests" thread-count="3">
  <!-- parallel可选tests/methods/classes,对应不同的并行粒度 -->
  <test name="目标测试集">
    <!-- 这里可以指定要运行的类或包 -->
    <packages>
      <package name="com.your.test.package"/>
    </packages>
  </test>
</suite>

2. 指定运行测试数量

在testng.xml里用<include>标签筛选要运行的测试方法,精准控制数量:

<class name="com.your.test.package.SampleTest">
  <methods>
    <include name="testCase1"/>
    <include name="testCase2"/>
    <!-- 只列出需要运行的方法,数量自行控制 -->
  </methods>
</class>

或者用命令行直接指定测试方法:

mvn test -Dtest=SampleTest#testCase1,SampleTest#testCase2 -Dthreadcount=3

三、自定义线程池完全控制

如果不想依赖测试框架,可以自己写代码用线程池控制并行数和测试任务:

import com.microsoft.playwright.Browser;
import com.microsoft.playwright.Page;
import com.microsoft.playwright.Playwright;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;

public class CustomTestRunner {
    public static void main(String[] args) {
        // 设定并行数量为3
        ExecutorService executor = Executors.newFixedThreadPool(3);

        // 添加要运行的测试任务,按需添加即可
        executor.submit(CustomTestRunner::runTest1);
        executor.submit(CustomTestRunner::runTest2);
        executor.submit(CustomTestRunner::runTest3);

        executor.shutdown();
        try {
            executor.awaitTermination(1, TimeUnit.HOURS);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }

    private static void runTest1() {
        try (Playwright playwright = Playwright.create()) {
            Browser browser = playwright.chromium().launch();
            Page page = browser.newPage();
            // 编写测试逻辑
            page.close();
            browser.close();
        }
    }

    private static void runTest2() {
        // 第二个测试逻辑
    }
}

这种方式适合完全自定义测试执行流程,灵活度最高。

内容的提问来源于stack exchange,提问作者Michael S.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 05:15:18