可以标记特征文件的一部分,以便行为能够仅验证特征文件的特定部分。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
的场景。
behave payment.feature --tags= creditpayment, debitpayment
如果运行下面给出的命令,则命令将同时执行标记为 creditpayment
和 debitpayment
的场景。
behave payment.feature --tags= creditpayment --tags=debitpayment
如果运行下面提到的命令,则命令不会执行带有 creditpayment
标记的场景。
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')
运行特征文件后得到的输出如下所述。在这里,使用了命令行为 --no-capture Payment.feature --tags=payment
。
输出显示通过了两个场景,因为特征文件中有两个场景具有支付的场景标签。
当使用命令:--no-capture Payment.feature --tags=~creditpayment
,输出如下 -
输出显示通过了两个场景,因为特征文件中有两个场景没有带有 creditpayment
的场景标签。当使用命令行: --no-capture Payment.feature --tags=high
时,输出如下 -
输出显示通过了三个场景,因为特征文件中有三个场景没有标记为高的特征。使用命令行为 --no-capture Payment.feature --tags=payment,creditpayment
获得下面提到的输出 -
输出显示通过了两个场景,因为特征文件中有两个场景没有标记为支付或信用支付的场景。