Behave 简明教程

Behave - Tags

功能文件的章节可以进行标记,以便 Behave 能够仅验证该功能文件的部分章节。只有场景、功能、场景大纲可以进行标记。

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

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

Feature File with tags (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 的场景。

behave payment.feature --tags= ~ creditpayment

因此, the Feature File with tags(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

Corresponding Step Implementation File

文件如下所示 −

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')

Output

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

no capture payment feature

输出显示两个场景通过,因为在功能文件中,有两个场景带有 payment 场景标签。

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

credit payment

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

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

scenario tag

输出显示三个场景通过,因为在功能文件中,有三个场景没有标记为 high 的功能。

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

scenario tagged with payment

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