大数跨境
0
0

AI 自动化测试实战:让 DeepSeek 自动生成 POM 结构与测试用例模板(Playwright + Python)

AI 自动化测试实战:让 DeepSeek 自动生成 POM 结构与测试用例模板(Playwright + Python) Playwright实战教程
2025-12-10
2
导读:本文分享了如何让 AI 按你的规范,自动生成 Page Object + 测试用例模板。

 


写自动化难的不是“会不会”,而是:
项目一多,POM 结构乱、用例模板不统一、后期维护成本爆炸。

本篇我们直接解决一个“工程级”问题:

✅ 如何让 AI 按你的规范,自动生成 Page Object + 测试用例模板


一、真实痛点:POM 写着写着就“形态各异”

在实际项目中,你很可能见过这些情况:

  • • 页面类命名随意(LoginPage、login_page、pageLogin)
  • • 定位器散落在测试文件中
  • • 有的页面 3 个方法,有的 30 个
  • • fixture / setup 风格不统一
  • • 新人根本不知道“该怎么写才算对”

👉 问题本质不是技术,而是「缺统一结构」。


二、AI 介入的正确姿势

我们不是让 AI“随便写”,而是:

把结构规范当作 Prompt 的一部分

让 AI 成为:

✅ POM 结构生成器
✅ 样板代码生成器
✅ 测试模板统一出口


三、目标效果(最终你会得到什么)

给 AI 一份输入:


   
    
   页面:登录页 + 商品页
功能:登录 → 加购 → 结算

它输出:


   
    
   project/
├─ pages/
│  ├─ base_page.py
│  ├─ login_page.py
│  ├─ inventory_page.py
│  └─ cart_page.py
├─ tests/
│  ├─ test_login.py
│  └─ test_order_flow.py
└─ conftest.py

✅ 结构统一
✅ 命名规范
✅ 可直接运行


四、项目基础结构(先统一认知)

推荐标准结构(Python + Playwright)


   
    
   project/

├─ pages/                 # POM 页面对象
│  ├─ __init__.py
│  ├─ base_page.py
│  ├─ login_page.py
│  └─ inventory_page.py

├─ tests/                 # 测试用例
│  ├─ test_login.py
│  └─ test_checkout.py

├─ conftest.py            # pytest fixtures
└─ requirements.txt

👉 后面的 Prompt 都会强制 AI 遵守这个结构。


五、核心:让 AI“按你想要的结构写代码”

✅ 标准 Prompt 模板(强烈建议收藏)


   
    
   你是一名资深自动化测试工程师。

请使用 Python + Playwright + Pytest,
为 https://www.saucedemo.com/ 生成 UI 自动化代码,要求:

【结构要求】
1. 使用 Page Object Model(POM)
2. pages 目录只存页面类,每个页面一个类
3. 测试逻辑只存在于 tests 目录
4. 定位器统一集中在页面类中
5. 页面类只包含业务方法,不写断言
6. 测试文件负责断言
7. 所有类和方法添加清晰注释

【目录结构必须如下】
- pages/base_page.py
- pages/login_page.py
- pages/inventory_page.py
- tests/test_login.py

【功能需求】
1. 登录页面:standard_user / secret_sauce
2. 登录成功后跳转 inventory 页面
3. 做基础断言

【输出要求】
请直接输出完整 Python 代码文件内容,
并标明文件名。

六、调用 DeepSeek API(完整可执行)

✅ 与上一篇教程可直接复用


   
    
   import os
import
 requests

API_KEY = os.getenv("DEEPSEEK_API_KEY")
API_URL = "https://api.deepseek.com/chat/completions"

prompt = """(粘贴上面的 Prompt 模板)"""

def
 call_deepseek(prompt):
    headers = {
        "Authorization"
: f"Bearer {API_KEY}",
        "Content-Type"
: "application/json"
    }

    data = {
        "model"
: "deepseek-chat",
        "messages"
: [{"role": "user", "content": prompt}],
        "temperature"
: 0.2
    }

    r = requests.post(API_URL, headers=headers, json=data)
    r.raise_for_status()
    return
 r.json()["choices"][0]["message"]["content"]

if
 __name__ == "__main__":
    content = call_deepseek(prompt)
    print
(content)

七、AI 输出示例(精简版)

pages/base_page.py


   
    
   class BasePage:
    def
 __init__(self, page):
        self
.page = page

    def
 open(self, url):
        self
.page.goto(url)

pages/login_page.py


   
    
   from pages.base_page import BasePage

class
 LoginPage(BasePage):
    USERNAME = "#user-name"
    PASSWORD = "#password"
    LOGIN_BTN = "#login-button"

    def
 login(self, username, password):
        self
.page.fill(self.USERNAME, username)
        self
.page.fill(self.PASSWORD, password)
        self
.page.click(self.LOGIN_BTN)

tests/test_login.py


   
    
   from pages.login_page import LoginPage

def
 test_login_success(page):
    login = LoginPage(page)
    login.open("https://www.saucedemo.com/")
    login.login("standard_user", "secret_sauce")

    assert
 "inventory" in page.url

✅ 已是 完全合格的 POM 项目起点


八、进阶:让 AI 一次生成「多页面 + 用例模板」

你可以继续让 AI 输出:

  • • cart_page.py
  • • checkout_page.py
  • • test_order_flow.py

👉 非常适合:

  • • 新项目初始化
  • • 多人协作统一规范
  • • 培训新人

九、最佳实践总结(非常重要)

✅ Prompt 里 必须写结构约束
✅ 输出要求“完整 .py 文件”
✅ 人负责 Review,不盲目粘代码
✅ 把 AI 当“高级代码生成器”,不是架构师


十、这一套方案适合谁?

✅ 已用 Playwright,但项目不规范
✅ 想推广 POM,但落地困难
✅ 希望 AI 真正进入测试开发流程
✅ 带团队 / 做企业级自动化的人


十一、下一篇可以继续写什么?

你这套体系,已经天然可以继续拓展

  • • 🔥 AI 自动生成测试前置 / 清理逻辑(setup / teardown)
  • • 🔥 AI 生成断言 & 校验点
  • • 🔥 AI 自愈定位器(多 locator + 回退策略)
  • • 🔥 AI 代码 Review 自动化

如果觉得本教程和本公众号对你有帮助,还请 点个赞,关个注,下次更新不迷路!

 


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