Pytest-Bdd-Playwright 系列教程(完结篇):本框架的功能参数说明

Pytest-Bdd-Playwright 系列教程(完结篇):本框架的功能参数说明

    • 简介
    • [1. 浏览器设置](#1. 浏览器设置)
    • [2. 环境与设备配置](#2. 环境与设备配置)
    • [3. 存储状态管理](#3. 存储状态管理)
    • [4. 测试用例筛选](#4. 测试用例筛选)
    • [5. 并行与重试控制](#5. 并行与重试控制)
    • [6. 报告生成与输出格式](#6. 报告生成与输出格式)
    • [7. 其他功能](#7. 其他功能)
    • 附录:参数说明表

简介

本框架支持多种浏览器和设备类型的测试,并具备存储状态管理、测试用例筛选、并行执行、失败重试、报告生成等功能。下面,我将对各个功能参数进行详细阐述。

1. 浏览器设置

  • --browser :指定浏览器类型

    默认值:chromium

    示例:--browser=chromium --browser=firefox --browser=webkit

    这个参数允许指定需要使用的浏览器类型。支持的浏览器类型有 Chromium、Firefox 和 Webkit,用户可以根据需求选择适合的浏览器进行测试。

  • --browser-channel :指定浏览器版本

    默认值:无

    示例:--browser-channel=chrome

    如果需要指定某个浏览器的特定版本,可以使用该参数。例如,指定使用 Chrome 的某个版本进行测试。

  • --headless :启用无头模式

    默认值:False

    示例:--headless

    该参数启用无头模式运行浏览器,不打开图形界面进行显示。适用于不需要查看浏览器界面的自动化测试。


2. 环境与设备配置

  • --env :指定测试环境

    默认值:无

    示例:--env=uat

    使用此参数可以选择不同的测试环境,例如 uat(用户验收测试环境)、staging(预生产环境)等。

  • --viewport :指定浏览器视窗大小

    默认值:系统默认设置

    示例:--viewport=1920x1080

    配置浏览器的显示分辨率,通常用于模拟不同的设备屏幕尺寸。

  • --device :指定模拟设备

    默认值:pc

    示例:--device="iPhone 12"

    模拟指定的设备进行测试,支持的设备包括多种手机、平板和PC。


3. 存储状态管理

  • --save-storage :保存存储状态

    默认值:无

    示例:--save-storage

    用于保存浏览器的存储状态,以便在之后的测试中恢复。常用于模拟登录状态或用户操作历史。

  • --load-storage :加载存储状态

    默认值:无

    示例:--load-storage

    从指定文件加载存储状态。与 --save-storage 配合使用,实现会话恢复。


4. 测试用例筛选

  • -m :根据 pytest.mark 筛选测试用例

    默认值:无

    示例:-m="smoke"

    该参数根据标记筛选测试用例。通过给测试用例打上标记,可以选择性地运行特定的测试集。

  • -k :根据名称筛选测试用例

    默认值:无

    示例:-k="test_login"

    按照测试用例名称匹配筛选需要运行的用例。例如,-k="test_login" 只会运行包含 test_login 的测试函数。


5. 并行与重试控制

  • -n :指定并行执行的进程数

    默认值:无

    示例:-n=3

    此参数用于指定同时运行的进程数,适用于提高测试执行速度,特别是在大规模测试时。

  • --reruns :失败用例重试次数

    默认值:无

    示例:--reruns=3

    设置失败的测试用例重试次数,适用于需要容忍偶尔失败的测试场景。

  • --reruns-delay :失败用例重试间隔时间(秒),配合 --reruns 使用

    默认值:无

    示例:--reruns-delay=1

    通过设置重试间隔时间,可以控制重试的频率,避免测试在高并发场景下过于密集。

  • --count :同一条用例重复运行的次数

    默认值:无

    示例:--count=3

    用于多次重复运行某个测试用例,适用于验证用例的稳定性。


6. 报告生成与输出格式

  • --gherkin-terminal-reporter :启用 Gherkin 格式的终端输出

    默认值:无

    示例:--gherkin-terminal-reporter

    启用 Gherkin 格式输出,适用于行为驱动开发(BDD)测试报告,直观展示测试结果。

  • --cucumberjson :生成 Cucumber JSON 格式的测试报告

    默认值:无

    示例:--cucumberjson=./reports/test_report.json

    该参数用于生成 Cucumber 格式的 JSON 测试报告,方便与其他工具(如 Jenkins)集成。

  • --alluredir :指定Allure测试报告的输出路径

    默认值:无

    示例:--alluredir=./reports

    用于生成 Allure 格式的测试报告,并指定报告存放路径。

  • --report :生成HTML格式的pytest-testreport报告

    默认值:无

    示例:--report=_report.html

    该参数生成 HTML 格式的测试报告,便于浏览器查看测试结果。

  • --junit-xml :生成JUnit XML格式的测试报告

    默认值:无

    示例:--junit-xml=./reports/test_report.xml

    适用于生成 JUnit XML 格式的测试报告,方便与持续集成(CI)工具兼容。


7. 其他功能

  • --slow-mode :启用慢速模式

    默认值:0

    示例:--slow-mode=1000

    用于控制测试运行的速度,可以增加每个测试的延迟,便于调试或减少资源消耗。

  • --dev-tools :启用开发者工具模式

    默认值:False

    示例:--dev-tools

    启用浏览器开发者工具,适合调试和查看浏览器的内部信息。

  • --random-order :随机执行测试用例

    默认值:按文件名排序

    示例:--random-order

    用于随机化测试执行顺序,避免测试间存在依赖关系导致的顺序问题。

  • --resource-intercept :拦截指定类型的资源,可配合 --block-resource 使用

    默认值:无

    示例:--resource-intercept=image

    拦截并阻止加载指定类型的资源,适用于测试中需要忽略某些资源的场景。

  • --url-intercept :拦截指定 URL 的资源,可配合 --block-resource 使用

    默认值:无

    示例:--url-intercept=https://www.baidu.com/

    通过拦截特定 URL 的请求,可以更灵活地控制测试的网络环境。

  • --block-resource :阻止指定类型的资源

    默认值:无

    示例:--block-resource

    通过此参数阻止加载某些不必要的资源,例如广告或无关的图像文件。

  • --page-on :开启页面事件监听

    默认值:无

    示例:--page-on=request

    监听浏览器页面事件,可以在特定的页面事件发生时触发某些操作,适用于需要细粒度控制的场景。

  • --init-script :页面加载之前添加初始化脚本

    默认值:无

    示例:--init-script

    在页面加载之前执行自定义脚本,用于设置环境变量、模拟用户行为等。

  • --send-report :发送测试报告到邮箱、企微、钉钉

    默认值:无

    示例:--send-report

    该参数用于将测试报告通过指定渠道(如电子邮件、企业微信、钉钉等)发送给相关人员。常用于团队协作中,自动化测试完成后自动发送报告,便于团队成员及时获取测试结果并采取相应措施。


附录:参数说明表

参数名 用途 默认值 示例
--browser 指定浏览器类型 chromium 一个或多个浏览器类型,例如:--browser=chromium --browser=firefox --browser=webkit
--browser-channel 指定浏览器版本 无默认值 --browser-channel=chrome
--headless 启用无头模式 False --headless
--env 指定测试环境 无默认值 --env=uat
--viewport 指定浏览器视窗大小 默认系统设定 --viewport=1920x1080
--device 指定模拟设备 pc --device="iPhone 12"
--save-storage 保存存储状态 无默认值 --save-storage
--load-storage 加载存储状态 无默认值 --load-storage
-m 根据 pytest.mark 筛选测试用例 无默认值 -m="smoke"
-k 根据名称筛选测试用例 无默认值 -k="test_login"
-n 指定并行执行的进程数 无默认值 -n=3
--reruns 失败用例重试次数 无默认值 --reruns=3
--reruns-delay 失败用例重试间隔时间(秒),配合 --reruns 使用 无默认值 --reruns-delay=1
--count 同一条用例重复运行的次数 无默认值 --count=3
--gherkin-terminal-reporter 启用 Gherkin 格式的终端输出 无默认值 --gherkin-terminal-reporter
--cucumberjson 生成 Cucumber JSON 格式的测试报告 无默认值 --cucumberjson=./reports/test_report.json
--alluredir 指定allure测试报告的输出路径 无默认值 --alluredir=./reports
--clean-alluredir 清理上次生成的allure测试报告,配合 --alluredir 使用 无默认值 --clean-alluredir
--report 生成HTML格式的pytest-testreport报告 无默认值 --report=_report.html
--template 指定pytest-testreport测试报告的模板,配合 --report 使用 无默认值 --template=2
--collect-only 只收集测试用例,不执行测试用例 无默认值 --collect-only
--junit-xml 生成JUnit XML格式的测试报告 无默认值 --junit-xml=./reports/test_report.xml
--slow-mode 启用慢速模式 0 --slow-mode=1000
--dev-tools 启用开发者工具模式 False --dev-tools
--random-order 随机执行测试用例 默认按文件名排序 --random-order
--resource-intercept 拦截指定类型的资源,可配合 --block-resource 使用 无默认值 一个或多个指定类型,例如:--resource-intercept=image
--url-intercept 拦截指定 URL 的资源,可配合 --block-resource 使用 无默认值 一个或多个指定 URL,例如:--url-intercept=https://www.baidu.com/
--block-resource 阻止指定类型的资源 无默认值 --block-resource
--page-on 开启页面事件监听 无默认值 一个或多个指定事件类型,例如:--page-on=request
--init-script 页面加载之前添加初始化脚本 无默认值 --init-script
--send-report 发送测试报告到邮箱、企微、钉钉 无默认值 --send-report

注: 本框架具体的完整代码需要联系我获取,你可以通过留言或私信方式与我取得联系。

相关推荐
博观而约取35 分钟前
Django ORM 1. 创建模型(Model)
数据库·python·django
精灵vector2 小时前
构建专家级SQL Agent交互
python·aigc·ai编程
Zonda要好好学习2 小时前
Python入门Day2
开发语言·python
Vertira2 小时前
pdf 合并 python实现(已解决)
前端·python·pdf
太凉2 小时前
Python之 sorted() 函数的基本语法
python
项目題供诗3 小时前
黑马python(二十四)
开发语言·python
晓13133 小时前
OpenCV篇——项目(二)OCR文档扫描
人工智能·python·opencv·pycharm·ocr
是小王同学啊~3 小时前
(LangChain)RAG系统链路向量检索器之Retrievers(五)
python·算法·langchain
AIGC包拥它3 小时前
提示技术系列——链式提示
人工智能·python·langchain·prompt
孟陬3 小时前
Python matplotlib 如何**同时**展示正文和 emoji
python