pytest-playwright 插件的使用

引言

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

pytest-playwright 插件简介

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

安装和配置

可以通过以下命令安装:

pip install pytest-playwright

安装内置浏览器

playwright install 

使用 Pytest CLI 运行测试

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

pytest --browser webkit --headed

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

自动化 CLI 参数配置

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

# 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 插件来测试一个网页的标题:

# 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。

pytest --headed

–browser

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

pytest --browser chromium
pytest --browser firefox
pytest --browser webkit

–browser-channel

指定浏览器的版本通道。

pytest --browser-channel xxx

–slowmo

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

pytest --slowmo 500

–device

模拟特定设备。

pytest --device "iPhone 6"

–output

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

pytest --output works

–tracing

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

pytest --tracing on
pytest --tracing retain-on-failure

–video

为每个测试录制视频。

pytest --video on
pytest --video retain-on-failure

–screenshot

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

pytest --screenshot on
pytest --screenshot only-on-failure

–full-page-screenshot

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

pytest --screenshot on --full-page-screenshot on

结语

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/22525.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Git - 创建和应用patch

如何在 Git 中打补丁 创建和应用 Git 补丁需要几个步骤。以下是详细的操作指南: 创建 Git 补丁 修改: 首先,在本地仓库中进行您想要的修改。 保存修改: 使用 "git add "对更改进行暂存。例如 git add modified_file…

Leetcode:最长公共前缀

题目链接:14. 最长公共前缀 - 力扣(LeetCode) 普通版本(横向扫描) 主旨:用第一个字符串与后续的每个字符串进行比较,先获取S1和S2的最长公共前缀,然后将该次比较获得的最长公共前缀…

python中如何使用密码字典

使用itertools循环迭代的模块来实现生成密码字典,用这个模块可以省不少事。 首先要调用itertools。 import itertools as its 然后将字典需要的元素(或者说是关键字)赋给word变量。 我们这里假设密码是纯数字,所以元素就是12345…

创新指南|2024企业如何开启生成式AI创新?从5大应用场景和6步抓手

想要了解如何采用生成式AI来提高企业效率和竞争力?本指南将介绍如何采用生成式AI来实现数字化转型,并打造智能化商业模式。从5大应用场景和6大步骤切入,让您了解如何开启生成式AI创新。立即连线创新专家咨询或观看创新战略方案视频进一步了解…

test2042

语义边缘检测和语义分割的区别 语义边缘检测&语义分割 Semantic Edge Detection vs. Semantic Segmentation 区别difference 任务目标 Task Objective 语义边缘检测 Semantic Edge Detection 识别图像中不同物体之间的边界线或轮廓及语义类别 Identifying the boundaries …

Less is more VS 精一 [生活感悟]

"Less is More”和王阳明的“精一”思想确实有相似之处。 王阳明的“精一”思想强调的是专注于一件事,将其做到极致,这与"Less is More”中提倡的通过减少数量来提高质量的理念不谋而合。两者都强调了专注和深度的重要性,而不是追…

2024如何优化SEO?

在2024年的今天,要问我会如何优化seo,我会专注于几个关键的方面。首先,随着AI内容生成技术的发展,我会利用这些工具来帮助创建或优化我的网站内容,但是,随着谷歌3月份的算法更新,纯粹的ai内容可…

无法访问内网怎么办?

许多用户在日常生活和工作中,经常需要进行远程连接和访问内网的需求。出于各种原因,有时我们会遇到无法访问内网的问题。本文将从可能的原因和解决方案的角度来探讨此问题。 原因分析 网络设置问题: 在一些情况下,我们无法访问内网可能是因为…

奈奎斯特极限定理(B=2W)

信道的带宽决定了信道中能不是阵地传输脉冲序列的最高速率。一个数字脉冲称为一个码元,用码元速率表示单位时间内信号波形的变化次数,即单位时间内通过信道传输的码元个数。若信号码元宽度为T秒,则码元速率B1/T。码元速率的单位叫波特。所以码…

分层存储的图片的3d显示

分层存储的图片叠层成为3d,并显示。 文件夹D:\mask内的分层存储的图像文件mask_1.PNG至mask_12.PNG: 1、显示为3d点云: import open3d as o3d import numpy as np from PIL import Imagedef images2point_cloud(paths, layer_height):point…

音频滤波笔记之高低通滤波器

音频滤波 音频滤波数字滤波器设计一阶IIR数字滤波器的设计最简单的低通滤波器高通滤波器带通滤波器带阻滤波器 算法高通滤波 参考文档 音频滤波 数字滤波器设计 一阶IIR数字滤波器的设计 最简单的低通滤波器 传递函数 H ( s ) 1 1 s H(s) \frac{1}{1 s} H(s)1s1​ 傅氏…

(九)Spring教程——ApplicationContext中Bean的生命周期

1.前言 ApplicationContext中Bean的生命周期和BeanFactory中的生命周期类似,不同的是,如果Bean实现了org.springframework.context.ApplicationContextAware接口,则会增加一个调用该接口方法setApplicationContext()的步骤。 此外&#xff0c…

NeMo训练llama2_7b(不用NeMo-Framework-Launcher)

TOC 本文介绍了NeMo如何训练llama2_7b模型 1.参考链接 支持的模型列表功能特性LLAMA2端到端流程(基于NeMo-Framework-Launcher) 2.创建容器 docker run --gpus all --shm-size32g -ti -e NVIDIA_VISIBLE_DEVICESall \--privileged --nethost -v $PWD:/home \-w /home --na…

香橙派 Orange AIpro 测评记录视频硬件解码

香橙派 Orange AIpro 测评记录视频硬件解码 香橙派官网:http://www.orangepi.cn/ 收到了一块Orange Pi AIpro开发板,记录一下我的测评~测评简介如下:1.连接网络2.安装流媒体进行硬件解码测试3.安装IO测试 简介 Orange Pi AI Pro 是香橙派联合…

0基础学习区块链技术——链之间数据同步样例

我们可以在https://blockchaindemo.io/体验这个过程。 创建区块 默认第一个链叫Satoshi(中本聪)。链上第一个区块叫“创世区块”——Genesis Block。后面我们会看到创建的第二条链第一个区块也是如此。 新增链 新创建的链叫Debby。默认上面有一个创世区块。 然后我们让这…

Android自定义View - LayoutParams

这一期我们来讲一讲LayoutParams这个玩意儿。Android入门的第一行代码就牵扯到这个东西&#xff0c;然而&#xff0c;你真的理解够了吗&#xff1f; 第一层理解 <RelativeLayout xmlns:android"http://schemas.android.com/apk/res/android"xmlns:app"http…

C# 中文字符串转GBK字节的示例

一、编写思路 在 C# 中&#xff0c;将中文字符串转换为 GBK 编码的字节数组需要使用 Encoding 类。然而&#xff0c;Encoding 类虽然默认并不直接支持 GBK 编码&#xff0c;但是可以通过以下方式来实现这一转换&#xff1a; 1.使用系统已安装的编码提供者&#xff08;如果系统…

数据库查询字段在哪个数据表中

问题的提出 当DBA运维多个数据库以及多个数据表的时候&#xff0c;联合查询是必不可少的。则数据表的字段名称是需要知道在哪些数据表中存在的。故如下指令&#xff0c;可能会帮助到你&#xff1a; 问题的处理 查找sysinfo这个字段名称都存在哪个数据库中的哪个数据表 SELEC…

大模型日报2024-06-04

大模型日报 2024-06-04 大模型资讯 1-bit LLMs或能解决AI的能耗问题 摘要: 大型语言模型&#xff08;如ChatGPT&#xff09;的性能不断提升&#xff0c;但其规模也在扩大。1-bit LLMs有望在保持高性能的同时&#xff0c;大幅降低能耗&#xff0c;解决AI系统的能源需求问题。 Hu…

Ubuntu系统设置Redis与MySQL登录密码

Ubuntu系统设置Redis与MySQL登录密码 在Ubuntu 20.04系统中配置Redis和MySQL的密码&#xff0c;您需要分别对两个服务进行配置。以下是详细步骤&#xff1a; 配置Redis密码 打开Redis配置文件: Redis的配置文件通常位于/etc/redis/redis.conf。 sudo nano /etc/redis/redis.c…