Playwright + Pytest 自动化测试实战应用

本文介绍了Playwright这款强大的自动化测试工具,它支持多种浏览器和操作系统,并提供了录制脚本功能。通过结合Pytest,实现了测试脚本的参数化和断言。文章通过一个在线商城的实战案例,展示了如何使用Playwright进行脚本录制,以及如何整合Pytest进行自动化测试。总结指出,Playwright与Pytest的结合为UI自动化测试带来了便利。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在这里插入图片描述

工具介绍

Playwright是微软公司开发的一款非常强大的开源自动化测试工具。之所以强大有以下原因:

  1. 支持所有主流浏览器:Chrome、Firefox、Safari、MS Edge。

  2. 支持无头模式和有头模式运行。

  3. 提供同步、异步的API,可以结合Pytest使用。

  4. 支持浏览器端的自动化脚本录制。

  5. 针对Python语言的自动化工具。

  6. 支持的操作系统有Linux、Mac OS以及Windows。

  7. 可以使用docker进行运行环境的安装。

安装环境

  1. 安装Python,Playwright需要3.7及以上版本的Python,因此至少要安装Python3.7以上的版本(最好用3.7,我试了下3.8有兼容问题)。

  2. 到https://github.com/microsoft/playwright-python去下载项目代码,主要是那个local_requirements.txt。

  3. 使用pip3 install playwright==1.8.0a1(这里最好指定版本)。

  4. 使用 pip3 install -r local_requirements.txt安装所有的依赖包。

  5. 使用python3 -m playwright install 安装浏览器驱动模块(用清华的镜像)。

这里在命令窗口运行:pip3 -v config list查看系统中的pip.ini文件,下面这个是我的。

[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
#index-url=http://mirrors.aliyun.com/pypi/simple/
#[install]
#trusted-host=mirrors.aliyun.com

这里需要注释掉aliyun,最好在白天或早上安装这个,速度会快些。其他时候还是用aliyun的镜像会快些。

  1. 检查安装是否成功,看到如下图界面,则表示安装成功。

在这里插入图片描述

脚本录制

Playwright的脚本录制需要使用命令codegen,下面详细解释一下这个命令的用法:
在这里插入图片描述
这个命令需要用的参数如下:

o或–output 指定保存脚本的文件路径及文件名

target 指定生成脚本的语言:Python、JavaScript、C#等

b 指定录制使用的浏览器:如:-b chromium(Chrome浏览器)、-b firefox、-b webkit三种。

项目实战

项目: 在线商城

  1. 脚本录制
python3 -m playwright codegen -o 'login_b2c.py' --target python -b chromium http://localhost:8080/b2c/index.html

在这里插入图片描述
以上为命令执行后进入的界面,当鼠标滑过元素的时候,会自动提示元素的xpath,而且启动的是无痕浏览模式,很容易和本地浏览的页面进行区分。

图片

点击登录链接,弹出下图:

在这里插入图片描述
输入必要的信息,进行登录。

登录成功,返回首页,注意红色框框部分,此处为断言目标。
在这里插入图片描述
关闭浏览器,输出脚本文件:这里可以看到我们的脚本文件正是命令中指定的那个文件名,右侧为脚本文件代码,这里使用的是同步模式。源码如下:

from playwright import sync_playwright
def run(playwright):
    browser = playwright.chromium.launch(headless=False)
    context = browser.newContext()
    # Open new page
    page = context.newPage()
    # Go to http://localhost:8080/b2c/index.html
    page.goto("http://localhost:8080/b2c/index.html")
    # Click text=/.*登录.*/
    page.click("text=/.*登录.*/")
    # assert page.url == "http://localhost:8080/b2c/login.html"
    # Click input[name="username"
### Python API 自动化测试实战教程 #### PlaywrightPytest应用 Playwright 是一个多浏览器自动化工具,支持 Chromium、Firefox 和 WebKit 浏览器的无头模式和有头模式运行[^1]。尽管它主要用于前端界面交互测试,但在某些情况下也可以用于辅助 API 测试中的上下文验证。 对于专注于 API 层面的自动化测试Pytest 提供了一个灵活且强大的框架。通过结合 fixtures 功能,可以实现复杂的依赖管理和环境准备逻辑[^2]。例如,在需要身份认证的情况下,可以通过 fixture 来模拟或获取真实的 token 并将其传递给各个测试函数[^3]。 以下是基于上述技术栈的一个简单示例: ```python import pytest import requests @pytest.fixture def auth_token(): """Fixture to provide an authentication token.""" return "mock-auth-token" def test_user_profile(auth_token): """ Test fetching user profile information with a valid authorization header. """ headers = {"Authorization": f"Bearer {auth_token}"} response = requests.get("https://api.example.com/profile", headers=headers) # Check that the request was successful and returned JSON data as expected assert response.status_code == 200, "Request failed" json_data = response.json() assert isinstance(json_data, dict), "Response is not in dictionary format" assert "username" in json_data.keys(), "'username' key missing from response body" ``` 此代码片段展示了如何利用 `pytest` 中的 fixture 定义全局变量(如授权令牌),并通过参数注入的方式让其作用于具体的单元测试之中。 另外值得注意的是项目结构方面的小技巧:当构建新的测试模块时,请按照特定命名约定操作——即所有文件均需以前缀 “test_” 开始;同时建议继承默认生成的基础类以便更好地兼容 IDE 插件功能[^4]。 --- ####
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值