讲师中心 微信公众号
AI工具推荐 视频效率加速

使用Python和Pytest运行Playwright测试:常见问题与解决方案

小丽君_2945

小丽君_2945

发布时间:2025-11-17 14:06:50

|

1045人浏览过

|

来源于php中文网

原创

使用Python和Pytest运行Playwright测试:常见问题与解决方案

本教程旨在解决使用python和pytest运行playwright测试时常见的测试文件未被发现的问题。文章将详细阐述pytest的测试发现机制、正确的测试文件和函数命名规范、项目目录结构的最佳实践,并提供一个完整的示例代码和运行指南,帮助开发者顺利执行playwright自动化测试,提升测试效率和可靠性。

理解Pytest的测试发现机制

在使用Python进行自动化测试时,Pytest是一个功能强大且广泛使用的测试框架。它通过一套默认的规则来自动发现测试文件和测试函数。当您遇到测试无法运行,或者Pytest报告“collected 0 items”时,通常是由于这些发现规则未被满足。

Pytest的默认测试发现规则包括:

  1. 文件命名约定:Pytest会查找所有以test_开头或以_test.py结尾的Python文件。
  2. 函数/方法命名约定:在这些测试文件中,Pytest会查找所有以test_开头的函数或方法。
  3. 类命名约定:如果测试函数包含在类中,该类名必须以Test开头(且不能有__init__方法)。

如果您的测试文件或测试函数不符合这些命名约定,Pytest将无法识别它们为测试,从而导致测试无法被执行。

环境准备与项目结构建议

在开始编写和运行Playwright测试之前,请确保您的环境中已安装必要的库。

立即学习“Python免费学习笔记(深入)”;

1. 安装Playwright和Pytest

您可以通过pip安装Playwright和Pytest:

pip install pytest playwright
playwright install

playwright install命令会下载所需的浏览器二进制文件。

2. 推荐的项目目录结构

为了确保Pytest能够正确发现您的测试,建议采用清晰的项目目录结构。以下是一个推荐的示例:

your_project/
├── tests/
│   ├── __init__.py  (可选,但推荐,使其成为一个Python包)
│   ├── test_example.py
│   └── test_another_feature.py
├── src/
│   └── your_application_code.py
├── requirements.txt
└── pyproject.toml (或 pytest.ini 用于Pytest配置)

将所有的测试文件放在一个专门的tests目录下是一个良好的实践。

编写Playwright测试用例

Playwright提供了一套简洁的API用于浏览器自动化。结合Pytest,您可以编写结构化的测试用例。以下是基于您提供的代码进行优化的示例:

创建一个名为tests/test_web_navigation.py的文件(请注意文件名前缀test_):

Browser Session Manager
Browser Session Manager

使用 Playwright 为 jimeng.jianying.com 管理浏览器会话,导入 cookies/localStorage 以自动化视频生成工作流,支持图片上传等功能

下载
import re
from playwright.sync_api import Page, expect

def test_has_title(page: Page):
    """
    测试导航到Playwright官网后,页面标题是否包含“Playwright”字样。
    """
    page.goto("https://playwright.dev/")

    # 期望页面标题包含正则表达式匹配的“Playwright”
    expect(page).to_have_title(re.compile("Playwright"))
    print("测试通过:页面标题包含'Playwright'")

def test_get_started_link(page: Page):
    """
    测试点击“Get started”链接后,是否能看到“Installation”标题。
    """
    page.goto("https://playwright.dev/")

    # 点击名为“Get started”的链接
    page.get_by_role("link", name="Get started").click()

    # 期望页面上存在名为“Installation”的标题,并且它是可见的
    expect(page.get_by_role("heading", name="Installation")).to_be_visible()
    print("测试通过:成功导航到安装页面")

# 注意:Playwright通常与pytest-playwright插件一起使用,
# 该插件会自动为每个测试函数提供一个`page` fixture。
# 如果您没有安装该插件,您可能需要手动初始化浏览器和页面上下文。
# 但对于Playwright的官方教程,通常默认您会使用pytest-playwright。

在这个示例中:

  • 文件名为test_web_navigation.py,符合Pytest的文件发现规则。
  • 函数名test_has_title和test_get_started_link都以test_开头,符合Pytest的函数发现规则。
  • page: Page是Playwright提供的类型提示,page对象由pytest-playwright插件作为fixture自动注入到测试函数中。

执行Playwright测试

在您的项目根目录下(或者在tests目录内),打开终端并运行pytest命令:

pytest

如果您的测试文件位于tests子目录中,pytest通常会自动递归查找。如果不在当前目录或其子目录中,您可以指定路径:

pytest tests/test_web_navigation.py

或者运行特定目录下的所有测试:

pytest tests/

成功运行后,您应该会看到类似以下的输出(具体内容可能因Pytest版本和测试结果而异):

============================= test session starts ==============================
platform darwin -- Python 3.10.9, pytest-7.1.2, pluggy-1.0.0
rootdir: /Users/your_user/your_project
plugins: anyio-3.5.0, playwright-0.3.0
collected 2 items

tests/test_web_navigation.py ..                                          [100%]

============================== 2 passed in X.XXs ===============================

这里的..表示两个测试都通过了。

常见问题与故障排除

如果您仍然遇到“collected 0 items”的问题,请检查以下几点:

  1. 文件命名:确保您的测试文件以test_开头(例如test_my_app.py)或以_test.py结尾(例如my_app_test.py)。
  2. 函数命名:确保您的测试函数以test_开头(例如def test_login_feature():)。
  3. 目录结构:确认您在正确的目录执行pytest命令,或者指定了正确的测试文件/目录路径。
  4. pytest-playwright插件:确保您已经安装了pytest-playwright插件,它是Playwright与Pytest集成的关键,负责提供page fixture等功能。
  5. Python包:如果您的tests目录是一个Python包(即包含__init__.py文件),Pytest在某些情况下可能需要更明确的路径来发现测试。但在大多数简单场景下,这不会是问题。
  6. Pytest版本:确保您使用的Pytest版本不是过旧或存在已知bug的版本。

总结与推荐资源

通过遵循Pytest的命名约定和推荐的项目结构,您可以有效避免测试未被发现的问题。Playwright结合Pytest提供了一个强大且灵活的自动化测试解决方案。

为了更深入地学习和解决可能遇到的问题,强烈建议查阅以下官方文档:

这些资源将为您提供最权威和最新的信息,帮助您充分利用Playwright和Pytest进行高效的Web自动化测试。

热门AI工具

更多
Laper
Laper Hot

Laper是专为编剧、导演和制片人推出的 AI 原生剧本创作工具。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

立刻MV
立刻MV Hot

立刻MV是一款AI文本写作工具,AI 音乐视频(MV)创作工具。

讯飞智作

讯飞智作是一款AI视频创作工具,AI文本配音工具,数字人课程、营销视频制作。

Loomy
Loomy Hot

一款AI工具,主要用于科大讯飞发布的桌面级 AI 助理,比 OpenClaw 更易用、更安全!,适合需要提升相关任务效率的用户。

小橡皮AI

一款AI工具,主要用于小橡皮一键去AI味,将机器味重的内容改得更有活人感,防止因为 AI 内容被平台打上 AI 标签,以及限流,适合需要提升相关任务效率的用户。

Atoms
Atoms Hot

Atoms是一款AI智能体工具,第一支自动构建真实业务的 AI 团队。

相关专题

更多
pip安装使用方法
pip安装使用方法

安装步骤:1、确保Python已经正确安装在您的计算机上;2、下载“get-pip.py”脚本;3、按下Win + R键,然后输入cmd并按下Enter键来打开命令行窗口;4、在命令行窗口中,使用cd命令切换到“get-pip.py”所在的目录;5、执行安装命令;6、验证安装结果即可。大家可以访问本专题下的文章,了解pip安装使用方法的更多内容。

3170

2023.10.09

更新pip版本
更新pip版本

更新pip版本方法有使用pip自身更新、使用操作系统自带的包管理工具、使用python包管理工具、手动安装最新版本。想了解更多相关的内容,请阅读专题下面的文章。

7223

2024.12.20

pip设置清华源
pip设置清华源

设置方法:1、打开终端或命令提示符窗口;2、运行“touch ~/.pip/pip.conf”命令创建一个名为pip的配置文件;3、打开pip.conf文件,然后添加“[global];index-url = https://pypi.tuna.tsinghua.edu.cn/simple”内容,这将把pip的镜像源设置为清华大学的镜像源;4、保存并关闭文件即可。

8882

2024.12.23

python升级pip
python升级pip

本专题整合了python升级pip相关教程,阅读下面的文章了解更多详细内容。

4567

2025.07.23

http与https有哪些区别
http与https有哪些区别

http与https的区别:1、协议安全性;2、连接方式;3、证书管理;4、连接状态;5、端口号;6、资源消耗;7、兼容性。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

5470

2024.08.16

PHP 命令行脚本与自动化任务开发
PHP 命令行脚本与自动化任务开发

本专题系统讲解 PHP 在命令行环境(CLI)下的开发与应用,内容涵盖 PHP CLI 基础、参数解析、文件与目录操作、日志输出、异常处理,以及与 Linux 定时任务(Cron)的结合使用。通过实战示例,帮助开发者掌握使用 PHP 构建 自动化脚本、批处理工具与后台任务程序 的能力。

486

2025.12.13

Figma AI自动化智能数据填充与交互生成实战
Figma AI自动化智能数据填充与交互生成实战

告别机械重复,详细演示如何用 AI 填充业务真实数据,并自动为页面添加交互连线,将静态设计稿快速转变为动态原型。

325

2026.05.13

Gradle插件开发入门教程
Gradle插件开发入门教程

本专题介绍Gradle插件开发的基本流程,涵盖插件类编写、自定义任务注册、扩展参数设计和插件应用方法,帮助你理解插件如何组织构建逻辑,减少多个项目之间的重复配置。

60

2026.10.22

Gradle Wrapper配置教程
Gradle Wrapper配置教程

本专题介绍Gradle Wrapper的基本作用,涵盖文件组成、生成方法、版本配置和任务调用,帮助你理解项目如何使用指定的Gradle版本,减少不同开发环境带来的构建差异。

40

2026.10.22

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Uvicorn官方安装与入门手册
Uvicorn官方安装与入门手册

共0课时 | 0人学习

Python uv官方项目管理指南
Python uv官方项目管理指南

共0课时 | 0人学习

Python uv官方安装与入门文档
Python uv官方安装与入门文档

共0课时 | 0人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn