Playwright 自动化测试系列(6)| 第三阶段:测试框架集成​指南:参数化测试 + 多浏览器并行执行

一、为何需要 Pytest + Playwright 集成?

在自动化测试中,测试框架的集成能力直接影响脚本的复用性和执行效率。Playwright 提供强大的浏览器控制能力,而 Pytest 作为 Python 生态中最流行的测试框架,其参数化测试Fixture 管理并行执行功能可显著提升测试覆盖率和执行速度。
核心价值对比

传统模式 Pytest 集成模式

手动编写重复测试逻辑

参数化驱动多场景测试

串行执行浏览器测试

多浏览器并行执行

缺乏统一报告和失败重试机制

自动生成 HTML 报告 + 失败重试

二、参数化测试实战:四种模式详解

参数化是减少代码冗余的核心手段,Pytest 通过 @pytest.mark.parametrize 实现数据驱动测试。

1. 基础参数化:多账号登录测试
import pytest
from playwright.sync_api import Page

@pytest.mark.parametrize("username, password", [
    ("user1", "pass1"), 
    ("user2", "pass2"),
    ("admin", "admin123")
])
def test_login(page: Page, username, password):
    page.goto("https://example.com/login")
    page.locator("#username").fill(username)
    page.locator("#password").fill(password)
    page.locator("#submit").click()
    assert page.url == "https://example.com/dashboard"
2. 文件驱动参数化:从 CSV 读取测试数据
import csv
import pytest

def load_test_data():
    with open("test_data.csv") as f:
        return list(csv.reader(f))

@pytest.mark.parametrize("product, quantity", load_test_data())
def test_add_to_cart(page: Page, product, quantity):
    page.locator(f"text={product}").click()
    page.locator("#quantity").fill(quantity)
    page.locator("#add-cart").click()
    assert page.locator(".cart-count").text_content() == quantity
3. 动态参数生成:组合测试策略
import pytest
from itertools import product

# 生成浏览器+分辨率组合参数
browsers = ["chromium", "firefox"]
resolutions = [(1920, 1080), (375, 812)]

@pytest.mark.parametrize("browser_type, resolution", product(browsers, resolutions))
def test_responsive(browser_type, resolution, request):
    browser = request.getfixturevalue("browser")
    context = browser.new_context(viewport={"width": resolution[0], "height": resolution[1]})
    page = context.new_page()
    page.goto("https://example.com")
    assert page.locator("#header").is_visible()
4. Fixture 参数化:复用浏览器上下文
@p
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值