Behave 简明教程

Behave - Step Matchers

Behave 中有三种类型的 Step Matcher。它们如下所示 −

  1. ParseMatcher (parse) − 基于 parse 模块。

  2. extended ParseMatcher(cfparse) − 允许基数语法。

  3. RegexMatcher (re) − 基于用于匹配模式的正则表达式。

Parse matcher

内置的 step matcher 具有以下所述特性:

  1. 使用和理解简单。

  2. 预定义和用户定义的数据类型支持此匹配器。

  3. 借助数据类型重新利用正则表达式。

  4. 隐藏正则表达式的复杂性。

extended Parse matcher

它扩展了 Parse Matcher。它除了具有 Parse 匹配器的特性外,还具有其他特性。

其他特性包括 −

  1. 理解基数字段语法。

  2. 为具有基数字段部分的字段生成缺失的类型转换器。

  3. Built on parse-type.

Regex matcher

它具有以下特性 −

  1. Backward compatible to Cucumber.

  2. 比起 parse 匹配器更易于使用。

让我们详细了解 parse 匹配器。

Parse Matchers

功能文件中可能会有几乎具有类似短语的步骤。Behave 具有解析能力。方法 use_step_parser 用于此操作,我们必须将解析器类型作为参数传递给该方法。

对于解析匹配器,我们必须传递参数解析。它利用解析进行正则表达式解析和匹配。

Feature File (almost Given similar steps)

相似步骤的功能文件如下所示 −

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

Corresponding Step Implementation File

步骤实现文件如下所示 −

from behave import *
#define parser type
use_step_matcher("parse")
@given('user is on "{p}" screen')
def step_impl(context, p):
   print(p)
@when('user makes a payment')
def step_pay_complete(context):
   pass

Output

运行功能文件后获得的输出如下。这里,我们使用了命令 behave --no-capture -f plain

step matchers

输出显示 debitcredit 。这两个值几乎与功能文件中的 Given 步骤类似而传递。在步骤实现中,我们解析了这两个步骤。