Behave - 可选部分


功能文件中可能有一些步骤具有几乎相似的短语。Behave 具有解析能力,因此一个步骤定义就可以涵盖这些步骤。use_step_parser方法用于此目的,我们必须将解析器类型作为参数传递给该方法。

对于扩展解析匹配器,我们必须传递参数 cfparse。它具有基数字段 (CF) 支持。默认情况下,它会为连接的基数生成缺失的类型转换器(如果给出的基数等于 1 的类型转换器)。

它可以支持以下解析表达式 -

  • {values:Type+} – 基数=1..N,很多

  • {值:类型*} – 基数=0..N,many0

  • {values:Type?} – 基数=0..1,可选

特征文件(几乎类似的步骤)

具有几乎相似步骤的功能文件如下 -

Feature − Payment Process
Scenario − Check Debit transactions
      Given user is on "debit" screen
   Scenario − Check Credit transactions
      Given user is on "credit" screen

方法register_type用于注册用户定义的类型,可以在匹配步骤时解析该类型以进行任何类型转换。

对应步骤实施文件

步骤实施文件如下 -

from behave import *
import parse
#define parse type
use_step_matcher("cfparse")
# for whitespace characters
@parse.with_pattern(r"x\s+")
def parse_string(s):
#type converter for "x" succeeded by single/multiple spaces
   return s.strip()
#register user-defined datatype
register_type(x_=parse_string)
#optional part :x_? cardinality field in parse expression
@given('user is on {:x_?}{payment} screen')
def step_payment(context, x_, payment):
   print("Payment type: ")
   print(payment)

输出

运行功能文件后获得的输出如下所示,使用的命令是beeve --no-capture -f plain

可选部分

输出显示借方贷方。这两个值已在功能文件中通过几乎相似的步骤传递。在步骤实现中,我们使用解析表达式中的基数字段解析了这两个步骤。