构建自动化测试框架之playwright+mcp
在models/
·
整合Playwright与MCP构建自动化测试框架
Playwright是一个强大的浏览器自动化工具,支持多语言(包括Python)。MCP(Model-Controller-Presenter)是一种设计模式,常用于构建可维护的测试框架。以下是将两者结合的方法。
安装依赖
确保安装Playwright及其Python绑定:
pip install playwright
playwright install
创建项目结构
按MCP模式组织项目目录:
project/
├── models/ # 数据模型
├── controllers/ # 业务逻辑
├── presenters/ # UI交互层
├── tests/ # 测试用例
└── utils/ # 辅助工具
定义模型层
在models/
中封装页面元素和数据:
# models/login_model.py
class LoginModel:
def __init__(self):
self.username_selector = "#username"
self.password_selector = "#password"
self.submit_selector = "button[type='submit']"
构建控制器层
在controllers/
中编写核心逻辑:
# controllers/login_controller.py
from playwright.sync_api import Page
class LoginController:
def __init__(self, page: Page):
self.page = page
def fill_credentials(self, username: str, password: str):
self.page.fill(self.model.username_selector, username)
self.page.fill(self.model.password_selector, password)
def submit(self):
self.page.click(self.model.submit_selector)
实现Presenter层
在presenters/
中处理用户交互:
# presenters/login_presenter.py
from models.login_model import LoginModel
from controllers.login_controller import LoginController
class LoginPresenter:
def __init__(self, page):
self.model = LoginModel()
self.controller = LoginController(page)
def login(self, username: str, password: str):
self.controller.fill_credentials(username, password)
self.controller.submit()
编写测试用例
在tests/
中使用Pytest框架:
# tests/test_login.py
from playwright.sync_api import sync_playwright
from presenters.login_presenter import LoginPresenter
def test_login_success():
with sync_playwright() as p:
browser = p.chromium.launch()
page = browser.new_page()
page.goto("https://example.com/login")
presenter = LoginPresenter(page)
presenter.login("admin", "password")
assert page.url == "https://example.com/dashboard"
browser.close()
添加配置管理
在utils/
中管理全局配置:
# utils/config.py
class Config:
BASE_URL = "https://example.com"
TIMEOUT = 5000
运行测试
使用Pytest执行测试:
pytest tests/ -v
关键优化点
- 页面对象模型:将元素定位与操作分离,提高可维护性
- 异常处理:在控制器层添加重试和错误捕获机制
- 并行测试:利用Playwright的上下文隔离特性运行并行测试
- 报告生成:集成Allure或Pytest-HTML生成可视化报告
该框架通过MCP模式实现关注点分离,Playwright提供底层自动化能力,适合中大型测试项目的可持续维护。
更多推荐
所有评论(0)