Pytest-Bdd-Playwright 系列教程(10):配置功能文件路径 & 优化场景定义

Pytest-Bdd-Playwright 系列教程(10):配置功能文件路径 & 优化场景定义

前言

  • 在实际应用的过程中,我们经常需要根据不同的测试需求来调整功能文件(.feature文件)的路径,以及优化测试场景的定义以减少重复代码;
  • 本文将详细介绍如何配置功能文件路径以及如何使用 functools.partial 方法来优化场景定义,帮助大家更高效地管理和执行 BDD 测试。

一、功能文件路径的配置

默认情况下,pytest-bdd 会将当前模块路径作为功能文件(feature file)的查找路径。但我们可以通过以下方式调整此行为:

1.1 全局设置功能文件路径

在 pytest 的配置文件中(如 pytest.ini、tox.ini 或 setup.cfg),使用 bdd_features_base_dir 键指定一个新的路径。例如:

ini 复制代码
# pytest.ini
[pytest]
bdd_features_base_dir = features/

这意味着,除非在单个场景中另有指定,否则所有的 BDD 特征文件(.feature 文件)都将从这个指定的路径下查找。在这个例子中,全局路径被设置为项目根目录下的features/路径。

1.2. 在场景中覆盖路径

我们可以通过 @scenario 装饰器的 features_base_dir 参数为单个场景设置不同的路径。例如:

python 复制代码
from pytest_bdd import scenario

@scenario("foo.feature", "Foo 功能")
def test_foo():
    pass

@scenario(
    "demo.feature",
    "Demo 功能",
    features_base_dir="./test/features/",
)
def test_foo_local():
    pass

这种方式允许在特定测试中灵活调整功能文件的路径。

第一个场景没有指定 features_base_dir 参数,因此它将使用全局设置的路径 features/;

第二个场景通过 @scenario 装饰器的 features_base_dir 参数指定了一个特定场景覆盖的路径:./test/features/,此时不会使用全局设置的路径。

二、避免重复输入功能文件名

当一个测试文件中包含多个场景时,重复输入相同的功能文件路径可能显得冗余且容易出错。为了解决这个问题,可以借助 Python 的 functools.partial 方法。

2.1 使用方法

在test_search.py文件,通过 functools.partial 创建一个带有预设路径的 scenario 函数。例如:

python 复制代码
import pytest
from steps.search_steps import *
from pytest_bdd import scenario
from functools import partial

scene = partial(scenario, 'search.feature')

@pytest.mark.smoke
@scene('成功搜索')
def test_successful_search():
    pass

@pytest.mark.low
@scenario('search.feature', '失败搜索')
def test_failed_search():
    pass

上述代码的优势在于只需指定一次功能文件路径 /features/search.feature,即可简化后续的场景定义。

2.2 functools.partial 的背景

functools.partial 是 Python 标准库中的一个工具,允许创建一个新函数,该函数会固定原始函数的部分参数值。有关更多信息,请参考 Python 官方文档。


三、应用场景总结

  • 全局配置路径:适用于大部分功能文件都在同一目录下的项目。
  • 按场景配置路径:适合少量场景需要自定义路径的情况。
  • 使用 partial 优化:非常适合多个场景都依赖同一个功能文件的情况。
相关推荐
贾伟康3 天前
【健康菜谱助手|08】HarmonyOS ArkTS 食材百科实战:实现分类、检索和详情跳转
软件测试·移动开发·harmonyos·arkts·arkui
2601_967987373 天前
Python在自动化测试中有哪些应用?
python自动化测试·selenium·appium·pytest·性能测试
蒸鱼Yuzheng3 天前
性能 CI 成本优化:设备分钟、风险分层与自适应测试选择
自动化测试·ci/cd·性能测试·测试平台·成本优化
自动化测试行业观察4 天前
AI智能测试用例生成技术解析:多源融合+LLM混合生成方案与实践
自动化测试·人工智能·科技·测试用例·智能化测试·ai测试平台·ai智能遍历
howard20054 天前
软件测试课程架构思维导图
软件测试·课程架构
泽众云测试5 天前
泽众软件与广州华南检验检测中心签约,PerformanceRunner性能测试工具助力第三方测评机构性能检测能力升级
软件测试·测试工具·性能测试
LabVIEW开发5 天前
风洞 50 米/秒,LabVIEW 采哪几路信号
自动化测试·数据采集·labview
贾伟康7 天前
【健康菜谱助手|06】HarmonyOS ArkTS 烹饪计时器实战:处理倒计时、暂停、恢复和到期反馈
软件测试·移动开发·harmonyos·arkts·arkui
贾伟康7 天前
【健康菜谱助手|05】HarmonyOS ArkTS 购物清单实战:去重食材并同步勾选、数量与清空动作
软件测试·移动开发·harmonyos·arkts·arkui
enjoy编程7 天前
playwright学习-I
typescript·vue·nodejs·1024程序员节·playwright