pytest-playwright 插件的使用

引言

在自动化测试领域,Playwright 是一个强大的工具,它支持 Chromium、Firefox 和 WebKit 三大浏览器引擎。Playwright 提供了与 Pytest 集成的插件,使得编写端到端测试变得更加简单和高效。本文将介绍如何使用 Pytest Playwright 插件来编写和运行自动化测试。

pytest-playwright 插件简介

Playwright 的 Pytest 插件允许开发者通过 Pytest 命令行接口(CLI)来启动和控制 Playwright 的浏览器实例。这使得测试过程更加灵活,并且可以轻松地集成到现有的 Pytest 测试框架中。

安装和配置

可以通过以下命令安装:

bash 复制代码
pip install pytest-playwright

安装内置浏览器

bash 复制代码
playwright install 

使用 Pytest CLI 运行测试

使用 Pytest CLI 运行测试非常简单。只需在命令行中输入以下命令:

bash 复制代码
pytest --browser webkit --headed

这条命令会启动 WebKit 浏览器,并以有头模式(headed mode)运行测试。

自动化 CLI 参数配置

为了简化测试命令,可以在 pytest.ini 文件中自动添加常用的 CLI 参数:

ini 复制代码
# pytest.ini 文件内容
[pytest]
# 使用 Firefox 浏览器并开启 UI
addopts = --headed --browser firefox

CLI 参数详解

CLI 参数允许你定制测试的运行方式。以下是一些常用的参数:

  • --headed: 以有头模式运行测试(默认为无头模式 headless)。
  • --browser: 指定运行测试的浏览器,可以是 chromiumfirefoxwebkit。可以多次指定以测试不同的浏览器(默认为 chromium)。
  • --browser-channel: 指定要使用的浏览器通道。
  • --slowmo: 减慢 Playwright 操作的速度,单位为毫秒。这在调试时非常有用(默认为 0)。
  • --device: 指定要模拟的设备。
  • --output: 测试产生的工件(如截图、视频等)的目录(默认为 test-results)。
  • --tracing: 是否为每个测试记录跟踪信息。选项有 onoffretain-on-failure(默认为 off)。
  • --video: 是否为每个测试录制视频。选项有 onoffretain-on-failure(默认为 off)。
  • --screenshot: 是否在每个测试后自动捕获屏幕截图。选项有 onoffonly-on-failure(默认为 off)。
  • --full-page-screenshot: 是否在失败时捕获全页面截图。默认情况下,只捕获视口截图。需要启用 --screenshot 参数(默认为 off)。

代码示例

下面是一个简单的测试示例,使用 Pytest Playwright 插件来测试一个网页的标题:

python 复制代码
# test_example.py
import pytest
from playwright.sync_api import Page, expect

@pytest.mark.parametrize("browser_type", ["chromium", "firefox", "webkit"])
def test_page_title(browser_type, browser):
    page = browser.new_page()
    page.goto("https://example.com")
    expect(page.title()).to_be("Example Domain")

在这个示例中,我们使用 pytest.mark.parametrize 装饰器来为不同的浏览器类型运行相同的测试。测试检查 "https://example.com" 的页面标题是否为 "Example Domain"。

以下是 CLI 参数及其使用示例:

--headed

运行测试时显示浏览器 UI。

bash 复制代码
pytest --headed

--browser

指定测试使用的浏览器类型。

bash 复制代码
pytest --browser chromium
pytest --browser firefox
pytest --browser webkit

--browser-channel

指定浏览器的版本通道。

bash 复制代码
pytest --browser-channel xxx

--slowmo

减慢 Playwright 操作的速度,方便观察测试过程。

bash 复制代码
pytest --slowmo 500

--device

模拟特定设备。

bash 复制代码
pytest --device "iPhone 6"

--output

指定测试产生的工件(如截图、视频等)的目录。

bash 复制代码
pytest --output works

--tracing

为每个测试记录跟踪信息。

bash 复制代码
pytest --tracing on
pytest --tracing retain-on-failure

--video

为每个测试录制视频。

bash 复制代码
pytest --video on
pytest --video retain-on-failure

--screenshot

在每个测试后自动捕获屏幕截图。

bash 复制代码
pytest --screenshot on
pytest --screenshot only-on-failure

--full-page-screenshot

在失败时捕获全页面截图。

bash 复制代码
pytest --screenshot on --full-page-screenshot on

结语

pytest-playwright 插件提供了丰富的 CLI 参数,可以帮助你定制测试环境,提高测试的可读性和可维护性。希望本文能够帮助你在自动化测试的道路上更进一步。

相关推荐
ThreeAu.2 天前
pytest 实战:用例管理、插件技巧、断言详解
python·单元测试·pytest·测试开发工程师
我的xiaodoujiao2 天前
使用 Python 语言 从 0 到 1 搭建完整 Web UI自动化测试学习系列 18--测试框架Pytest基础 2--插件和参数化
python·学习·测试工具·pytest
小小测试开发3 天前
pytest 库用法示例:Python 测试框架的高效实践
开发语言·python·pytest
know__ledge3 天前
Pytest+requests进行接口自动化测试8.0(Allure进阶 + 文件上传接口 + 单接口多用例)
pytest
川石课堂软件测试3 天前
CSS中常用的几种定位。
开发语言·css·python·网络协议·http·html·pytest
啊森要自信4 天前
【GUI自动化测试】Python 自动化测试框架 pytest 全面指南:基础语法、核心特性(参数化 / Fixture)及项目实操
开发语言·python·ui·单元测试·pytest
啊森要自信5 天前
【GUI自动化测试】YAML 配置文件应用:从语法解析到 Python 读写
android·python·缓存·pytest·pip·dash
我的xiaodoujiao5 天前
从 0 到 1 搭建完整 Python 语言 Web UI自动化测试学习系列 17--测试框架Pytest基础 1--介绍使用
python·学习·测试工具·pytest
程序员杰哥6 天前
Pytest与Unittest测试框架对比
自动化测试·软件测试·python·测试工具·测试用例·excel·pytest
软件测试小仙女6 天前
Pytest参数化实战:高效测试API接口
软件测试·测试开发·测试工具·pytest·接口测试·api·参数化