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 .
输出显示通过了两个场景,因为功能文件中有两个场景具有支付的场景标签。
当我们使用命令时 Behave --no-capture Payment.feature --tags=~creditpayment ,输出如下:
输出显示通过了两个场景,因为功能文件中有两个场景没有带有 creditpayment 的场景标签。
当我们使用命令时 Behave --no-capture Payment.feature --tags=high ,输出如下:
输出显示通过了三个场景,因为特征文件中有三个场景没有标记为高的特征。
使用命令 Behave --no-capture Payment.feature --tags=payment,creditpayment 得到下面提到的输出:
输出显示通过了两个场景,因为功能文件中有两个场景没有标记为支付或信用支付的场景。