Behave 标签


可以标记特征文件的一部分,以便Behave 能够仅验证特征文件的特定部分。 A Scenario, Feature, Scenario Outline 只能被标记。

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

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

带有标签的功能文件(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

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

behave payment.feature --tags=high

如果运行以下命令,则表示该命令将执行标记为 creditpayment 或 debitpayment 的 Scenarios。

behave payment.feature --tags= creditpayment, debitpayment

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

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

如果运行下面提到的命令,则意味着该命令不会执行带有 creditpayment 标记的场景。

behave payment.feature --tags= ~ creditpayment

Hence, 带有标签的功能文件(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 .

No Capture Payment Feature

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

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

Creditpayment

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

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

Scenario Tag

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

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

Scenario tagged with payment

输出显示通过了两个场景,因为功能文件中有两个场景没有标记为支付或信用支付的场景。