大数跨境
0
0

AI 自动化测试:用 DeepSeek 让断言“更聪明”——智能断言生成与自适应判断实战

AI 自动化测试:用 DeepSeek 让断言“更聪明”——智能断言生成与自适应判断实战 Playwright实战教程
2025-11-21
0

 

1. 写在前面:为什么需要“智能断言”?

传统自动化测试的断言通常是:


   
    
   assert page.locator("#title").inner_text() == "Order Completed"

但现实情况是:

  • • UI 文案可能新增空格/标点
  • • 部分字段可能动态变化(如欢迎语、时间补全)
  • • 页面布局可能调整导致选择器变化
  • • 多语言环境导致文案略有不同
  • • 后端返回提示可能随机(如“轻度错误恢复”)

这些情况导致:

  • • ✔ 用例逻辑本身是对的
  • • ❌ 断言因“过于严格”而失败
  • • ❌ QA 花大量时间修复断言

👉 于是,“智能断言” 的需求出现了:

  • • 使用 LLMDeepSeek)自动生成断言意图
  • • 使用 模糊判断 / 多层断言结构 增强鲁棒性
  • • 使用 页面上下文 + 历史数据 自动修复断言

本篇我们要做的,就是开发一个:

  • • AI 辅助的断言生成器(AI Assertion Generator)
    它将帮助测试人员:
  • • 输入成功页面截图或 HTML
  • • 让 DeepSeek 自动输出可执行的断言代码
  • • 避免“过拟合断言”
  • • 通过“多重断言策略”提升稳定性

支持“自动修复断言失败”能力

2. 整体流程:AI 智能断言工作流

流程如下:


   
    
   (1)捕获测试页面 HTML / 文案 / 元素结构
        ↓
(2)发送至 DeepSeek,让其分析成功状态核心要点
        ↓
(3)DeepSeek 输出智能断言:
      - 最小必要断言(核心逻辑)
      - 次级断言(可选)
      - 允许变化范围(模糊匹配)
        ↓
(4)将断言写入测试脚本
        ↓
(5)执行时如失败 → 进入 AI 自动修复模块(可选)

优势:

  • • 不再依赖固定文案
  • • 不再害怕UI 微调
  • • 可自动生成一整套测试断言结构
  • • 断言失败后还能自动修复

3. DeepSeek Prompt 模板:生成智能断言

以下 Prompt 经过你前面文章体系优化,可进一步复用 👇


   
    
   Prompt:输入给 DeepSeek 的模板
你是专业的自动化测试工程师。
现在我提供给你一次测试成功后的页面内容(HTML + 文案)。
请你分析:

1.
 用户真正“完成任务”的核心成功标准是什么?
2.
 生成 Playwright + Python 可执行断言代码,要求:
   -
 使用 expect() 而不是 assert
   -
 不对文案进行严格匹配,可用正则或包含判断
   -
 断言数量不要超过 5 条
   -
 每条断言解释“为什么要这么写”
3.
 输出格式必须为:
{
  "assertions": [
      {"reason": "...", "code": "..."},
      ...
  ]
}

下面是页面 HTML:
<<<HTML_START>>>
{{html_content}}
<<<HTML_END>>>

4. Python 示例:调用 DeepSeek 自动生成断言


   
    
   import os
from
 openai import OpenAI
client = OpenAI(api_key=os.getenv("DEEPSEEK_API_KEY"),
                base_url="https://api.deepseek.com")

def
 generate_assertions(html_text: str):
    prompt = open("prompt_assertion.txt").read().replace("{{html_content}}", html_text)

    response = client.chat.completions.create(
        model="deepseek-chat",
        messages=[{"role": "user", "content": prompt}],
        temperature=0
    )

    return
 response.choices[0].message.content

运行示例:


   
    
   html = open("success_page.html").read()
result = generate_assertions(html)
print
(result)

DeepSeek 将返回 JSON:


   
    
   {
  "assertions"
: [
    {

      "reason"
: "确认订单成功提示出现",
      "code"
: "expect(page.get_by_text(re.compile('order.*success', re.I))).to_be_visible()"
    }
,
    {

      "reason"
: "确认订单编号显示",
      "code"
: "expect(page.locator('#order-id')).not_to_be_empty()"
    }

  ]

}

5. 生成后的智能断言如何加入测试脚本?

实践版用法如下 👇


   
    
   import json
from
 playwright.sync_api import Page, expect

def
 run_ai_assertions(page: Page, ai_json: str):
    data = json.loads(ai_json)
    for
 item in data["assertions"]:
        print
(f"AI 判断理由:{item['reason']}")
        exec
(item['code'])

集成到用例:


   
    
   def test_checkout_success(page: Page):
    # 前置步骤 …

    page.goto("https://demo/checkout/success")

    # 导入 DeepSeek 的断言 JSON

    ai_json = open("assertion_output.json").read()

    run_ai_assertions(page, ai_json)

你会得到:

  • • ✔ 断言自动生成
  • • ✔ 自动解释
  • • ✔ 自动执行
  • • ✔ 更稳健

6. 可选:断言失败时自动修复(进阶)

你可以在异常捕获时:

  • • 把报错文本
  • • 断言上下文
  • • 页面截图 HTML
  • • 再一次发送给 DeepSeek,让其输出更新后的断言。

   
    
   def self_heal_assert(page, assertion_json):
    try
:
        run_ai_assertions(page, assertion_json)
    except
 Exception as e:
        repair_input = {
            "error"
: str(e),
            "html"
: page.content(),
            "old_assertions"
: assertion_json
        }

        # 再次请求 deepseek 生成修复版断言

        repaired = repair_assertions(repair_input)
        with
 open("assertion_repaired.json", "w") as f:
            f.write(repaired)

        raise
 e

你可以在下一次 CI 执行时自动应用修复。

7. 最佳实践

  • • ✔ 1. 深度总结页面“成功状态”

    确保 DeepSeek 理解“业务成功”的核心标准。

  • • ✔ 2. 不要让 AI 生成过多断言

4–5 条足够。

  • • ✔ 3. 使用 expect() 而非 assert

    Playwright 内置等待更稳。

  • • ✔ 4. 反复迭代 Prompt,养成自己的“团队断言风格”
  • • ✔ 5. 自动修复断言建议放在 CI 每夜任务

减少回归成本。

8. 示例文件打包结构


   
    
   ai_assertions/
│— prompt_assertion.txt
│— generate_assertions.py
│— run_test.py
│— success_page.html
│— assertion_output.json

你可以在前面“AI 自动生成 POM”“AI 自动修复用例”等教程之上继续扩展这个能力。

9. 小结:智能断言,是 AI 自动化测试最容易落地的一块

本篇教程帮助你:

用 DeepSeek 生成稳健断言

  • • 大幅降低“断言失败”误报
  • • 打造 AI 自适应测试
  • • 为后续的“AI 质量周报”“AI 自愈系统”打基础

 


【声明】内容源于网络
0
0
Playwright实战教程
内容 224
粉丝 0
Playwright实战教程
总阅读22
粉丝0
内容224