You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在python-bdd测试中正确传入字符串参数?

解决pytest-bdd字符串参数匹配失败问题

问题根源

你的步骤定义既没正确匹配feature中带引号的参数文本,又存在占位符与函数参数名不匹配的问题,导致pytest-bdd无法关联到对应的步骤实现。

修复方案

方案1:用正则捕获引号内的参数(保留feature中的引号格式)

直接通过正则表达式精准匹配feature步骤里的引号及内部内容,同时确保捕获的参数名与函数参数一致:

@given(r'the current account balance is "(?P<amount>[^"]+)"')
def current_account_initial_balance(amount):
    print(amount)
  • r'' 标记原始字符串,避免转义字符干扰正则匹配
  • (?P<amount>[^"]+) 是命名捕获组,专门提取引号内的非引号字符,参数名amount与函数入参完全对应

方案2:简化步骤文本(去掉feature中的引号)

如果可以调整feature文件的步骤格式,去掉参数外的引号,可直接用pytest-bdd的基础占位符:
feature步骤修改为:

Given the current account balance is zero

步骤定义写成:

@given("the current account balance is {amount}")
def current_account_initial_balance(amount):
    print(amount)

原写法失效的核心原因

  1. 占位符{arg}与函数参数amount名称不匹配,pytest-bdd无法完成参数映射
  2. feature步骤中的引号属于步骤文本的一部分,但你的步骤定义未包含引号内容,导致整体字符串不匹配,触发StepDefinitionNotFoundError

内容的提问来源于stack exchange,提问作者Martin Gilchrist

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 08:14:54