2026年用 Playwright + LLM 搭建你的第一个测试 Harness:让 AI 看懂代码,自动写白盒测试

用 Playwright + LLM 搭建你的第一个测试 Harness:让 AI 看懂代码,自动写白盒测试摘要 你是否希望 这不是幻想 本文手把手教你用 Playwright 自动化 本地大模型 LLM 搭建一个 轻量级白盒测试 Harness 无需复杂框架 所有代码可本地运行 聚焦真实代码变更场景 输出可执行的测试用例 10 分钟 让你的 AI 学会 读代码 写测试 做验证 先说人话 传统方式 你读代码 人工设计用例 手写断言 Harness

大家好,我是讯享网,很高兴认识大家。这里提供最前沿的Ai技术和互联网信息。



摘要 你是否希望:

这不是幻想!本文手把手教你用 Playwright(自动化) + 本地大模型(LLM),搭建一个 轻量级白盒测试 Harness。 ✅ 无需复杂框架 ✅ 所有代码可本地运行 ✅ 聚焦真实代码变更场景 ✅ 输出可执行的测试用例 10 分钟,让你的 AI 学会“读代码、写测试、做验证”

先说人话:

💡 传统方式:你读代码 → 人工设计用例 → 手写断言 Harness 方式:AI 读代码 → 自动推导用例 → 自动生成测试 → 自动运行验证

表格

✅ 组合效果: Playwright 负责“动手”,LLM 负责“动脑”, 二者通过 Python 脚本无缝协作。

场景设定

你有一个 Java 服务,MR 中修改了如下方法:

java编辑

// 原逻辑 public boolean needCaptcha(String phone) {

return true; 

}

// MR 新增逻辑 public boolean needCaptcha(String phone)

MemberDto member = memberService.getMember(phone); return member == null; // 会员免验证码 

}

目标:自动生成覆盖新旧逻辑的测试用例

步骤 1:准备你的“代码知识包”

把被测方法和相关上下文保存为 code_context.txt

text编辑

【方法名】UserService.needCaptcha 【输入】String phone 【输出】boolean 【业务规则】

  • 若手机号为空,返回 true(需验证码)
  • 若手机号对应已注册会员,返回 false(免验证码)
  • 否则返回 true

【依赖服务】

  • memberService.getMember(phone): 返回 MemberDto 或 null
    步骤 2:安装基础环境

    bash编辑

    # 1. 安装 Playwright pip install playwright playwright install chromium
    📌 提示:未来可用 AST 自动提取,初期手动整理即可。

2. 安装 Ollama(运行本地大模型)

curl -fsSL https://ollama.com/install.sh | sh

3. 拉取 Qwen 模型(中文友好)

ollama run qwen:latest

步骤 3:编写 Harness 核心脚本(whitebox_harness.py

python编辑

import requests import subprocess import tempfile import os

1. 让 LLM 读代码,生成测试

def generate_test(code_context: str):

prompt = f""" 你是一名资深 Java QA 工程师,请为以下方法生成 JUnit 5 单元测试: {code_context} 要求: - 覆盖所有分支:空手机号、会员、非会员 - 使用 Mockito mock memberService - 输出完整可运行的 Java 代码,不要解释 """ resp = requests.post("http://localhost:11434/api/generate", json={ "model": "qwen", "prompt": prompt, "stream": False }) return resp.json()["response"] 

2. 用 Playwright 执行测试(模拟 CI 环境)

def run_test(java_code: str):

# 创建临时测试文件 with tempfile.NamedTemporaryFile(mode='w', suffix='.java', delete=False) as f: f.write(java_code) test_file = f.name try: # 编译并运行(简化示例,实际可用 Maven/Gradle) compile_result = subprocess.run( ["javac", test_file], capture_output=True, text=True ) if compile_result.returncode != 0: return {"status": "compile_error", "log": compile_result.stderr} # 运行测试(此处省略,实际可调用 mvn test) return {"status": "success", "message": "Test generated and compiled."} finally: os.unlink(test_file) 

3. 主流程

if name == "main":

# 读取代码上下文 with open("code_context.txt", "r") as f: context = f.read() # 生成测试 test_code = generate_test(context) print("✅ AI 生成的测试用例: 

")

print(test_code) # 验证(可选) result = run_test(test_code) print(" 

🔍 验证结果:", result["status"])

步骤 4:运行!见证 AI 写白盒测试

bash编辑

python whitebox_harness.py 

输出示例

java编辑

@Test void needCaptcha_nullPhone_returnsTrue() {

assertTrue(userService.needCaptcha(null)); 

}

@Test void needCaptcha_emptyPhone_returnsTrue() {

assertTrue(userService.needCaptcha("")); 

}

@Test void needCaptcha_registeredMember_returnsFalse()

@Test void needCaptcha_newUser_returnsTrue()

完美覆盖所有分支

1. 自动解析 Git Diff

git diff 提取 MR 变更,自动填充 code_context.txt

2. 集成静态分析

CodeQLSonarQube 找出未覆盖的分支,喂给 LLM 补测。

3. 失败自修复

若测试编译失败,把错误日志再喂给 LLM:“请修正语法错误”。

表格

💡 核心优势你不是在“请求 AI 帮忙”,而是在“训练一个专属测试助手”

你负责定义“什么是对的”, AI 负责穷尽“怎么验证对”

用 Playwright + LLM 搭建的这个小 Harness, 或许就是你迈向 AI 原生质量工程 的第一步。

现在,就去试试—— 让 AI 为你写第一个白盒测试吧

环境:Python 3.10 + Playwright 1.42 + Ollama Qwen 资源

小讯
上一篇 2026-04-16 18:44
下一篇 2026-04-16 18:42

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/262002.html