Behave - 标签

可以标记特征文件的一部分,以便 Behave 能够仅验证特征文件的特定部分。 场景、功能、场景大纲只能被标记。

此外,用于功能的标签应由其所有场景和场景大纲继承。 标签放置在我们要标记的场景或功能之前。 我们也可以有多个标签,它们在一行中由空格分隔。

标签以@开头,后跟标签名称。

带有标签的特征文件(Payment.feature)

带标签的特征文件如下 −

@high
Feature − Payment Process
@creditpayment
            Scenario − Credit card transaction
   Given user is on credit card payment screen
   Then user should be able to complete credit card payment
@debitpayment
            Scenario − Debit card transaction
   Given user is on debit card payment screen
   Then user should be able to complete debit card payment

标签通过根据标签排除/包含特定场景或功能来帮助管理测试执行。

在上面的例子中,要运行带有标签 creditpayment 的特定场景,我们必须运行下面提到的命令 −

behave payment.feature --tags=creditpayment

要运行标签为 high 的功能并执行所有场景,我们必须运行以下命令 −

behave payment.feature --tags=high

如果运行下面的命令,则意味着该命令将执行带有 creditpayment 或 debitpayment 标记的场景。

behave payment.feature --tags= creditpayment, debitpayment

如果运行下面给出的命令,则意味着该命令将执行标记有 creditpayment 和 debitpayment 的场景。

behave payment.feature --tags= creditpayment --tags=debitpayment

如果运行下面提到的命令,则表示该命令不执行带有creditpayment标记的Scenario。

behave payment.feature --tags= ~ creditpayment

因此,带有标签的特征文件(Payment.feature)现在将如下所示 −

@high
Feature − Payment Process
@creditpayment @payment
   Scenario − Credit card transaction
      Given user is on credit card payment screen
@debitpayment @payment
      Scenario − Debit card transaction
      Given user is on debit card payment screen
   Scenario − Cheque transaction
      Given user is on cheque payment screen

对应步骤实现文件

文件如下 −

from behave import *
@given('user is on credit card payment screen')
def credit_card_pay(context):
   print('User is on credit card payment screen')
@given('user is on debit card payment screen')
def debit_card_pay(context):
   print('user is on debit card payment screen')
@given('user is on cheque payment screen')
def cheque_pay(context):
   print('user is on cheque payment screen')

输出

运行特征文件后得到的输出如下。 在这里,我们使用了命令 behave --no-capture Payment.feature --tags=payment

没有捕获支付功能

输出显示两个场景已通过,因为功能文件中有两个场景具有带支付的场景标签。

当我们使用命令behave --no-capture Payment.feature --tags=~creditpayment时,输出如下 −

Creditpayment

输出显示两个场景已通过,因为功能文件中有两个场景没有带有 creditpayment 的场景标签。

当我们使用命令behave --no-capture Payment.feature --tags=high时,输出如下 −

场景标签

输出显示三个场景通过,因为特征文件中有三个场景没有标记为高的特征。

使用命令 behave --no-capture Payment.feature --tags=payment,creditpayment 得到下面提到的输出 −

带有支付标签的场景

输出显示两个场景已通过,因为功能文件中有两个场景没有用 payment 或 creditpayment 标记的场景。