如何使用 TestStepListener 在 QAF 中跳过测试步骤?
How to skip teststep in QAF using TestStepListener?
我正在使用 QAF 作为我的测试自动化框架。
我想跳过生产环境中的特定测试步骤。如何使用 TestStepListener 跳过 BDD 测试步骤的执行?
这是一个示例用例:
对于购物车应用程序,我开发了 200 多个场景。我在测试环境中执行所有场景。现在我想在生产环境中执行所有场景。现在我想在生产环境中跳过支付和订单审核的最后步骤。我该怎么做?
能否提供用例的详细信息?如果我的理解是正确的,您不想在生产环境中执行特定步骤。您可以使用步骤侦听器跳转到特定的步骤索引,但不能跳过当前步骤。其中一种方法是将步骤分组到 high-level 步骤。例如,而不是在 bdd
中编写详细步骤
Given some situation
When performing some action
Then step-1
And step-2 not for production
and step-3
你可以有高阶台阶
Given some situation
When performing some action
Then generic step for all environments
这里您的 generic step for all environments
步骤可以在不同的包中针对不同的环境实现。在运行时配置步骤提供程序包。
另一个技巧是在步骤侦听器中设置和重置 dry-run 模式。例如,在您的步骤定义中,您可以提供额外的 meta-data。在步骤侦听器取决于 meta-data if require set dry-run mode in before method and reset it after in method.
步骤定义:
@MetaData("{'skip_prod':true}")
@QAFTestStep(description = "do payment")
public static void doPayment() {
//TODO: write your code here
}
步骤侦听器代码可能如下所示:
public void beforExecute(StepExecutionTracker stepExecutionTracker) {
Map<String, Object> metadata = stepExecutionTracker.getStep().getMetaData();
if (null != metadata && metadata.containsKey("skip_prod") && "prod".equalsIgnoreCase(getBundle().getString("env"))) {
//do not run this step
getBundle().setProperty(ApplicationProperties.DRY_RUN_MODE.key,true);
}
}
public void afterExecute(StepExecutionTracker stepExecutionTracker) {
Map<String, Object> metadata = stepExecutionTracker.getStep().getMetaData();
if (null != metadata && metadata.containsKey("skip_prod") && "prod".equalsIgnoreCase(getBundle().getString("env"))) {
// this is not dry run so reset
getBundle().setProperty(ApplicationProperties.DRY_RUN_MODE.key,false);
}
}
我正在使用 QAF 作为我的测试自动化框架。
我想跳过生产环境中的特定测试步骤。如何使用 TestStepListener 跳过 BDD 测试步骤的执行?
这是一个示例用例: 对于购物车应用程序,我开发了 200 多个场景。我在测试环境中执行所有场景。现在我想在生产环境中执行所有场景。现在我想在生产环境中跳过支付和订单审核的最后步骤。我该怎么做?
能否提供用例的详细信息?如果我的理解是正确的,您不想在生产环境中执行特定步骤。您可以使用步骤侦听器跳转到特定的步骤索引,但不能跳过当前步骤。其中一种方法是将步骤分组到 high-level 步骤。例如,而不是在 bdd
中编写详细步骤Given some situation
When performing some action
Then step-1
And step-2 not for production
and step-3
你可以有高阶台阶
Given some situation
When performing some action
Then generic step for all environments
这里您的 generic step for all environments
步骤可以在不同的包中针对不同的环境实现。在运行时配置步骤提供程序包。
另一个技巧是在步骤侦听器中设置和重置 dry-run 模式。例如,在您的步骤定义中,您可以提供额外的 meta-data。在步骤侦听器取决于 meta-data if require set dry-run mode in before method and reset it after in method.
步骤定义:
@MetaData("{'skip_prod':true}")
@QAFTestStep(description = "do payment")
public static void doPayment() {
//TODO: write your code here
}
步骤侦听器代码可能如下所示:
public void beforExecute(StepExecutionTracker stepExecutionTracker) {
Map<String, Object> metadata = stepExecutionTracker.getStep().getMetaData();
if (null != metadata && metadata.containsKey("skip_prod") && "prod".equalsIgnoreCase(getBundle().getString("env"))) {
//do not run this step
getBundle().setProperty(ApplicationProperties.DRY_RUN_MODE.key,true);
}
}
public void afterExecute(StepExecutionTracker stepExecutionTracker) {
Map<String, Object> metadata = stepExecutionTracker.getStep().getMetaData();
if (null != metadata && metadata.containsKey("skip_prod") && "prod".equalsIgnoreCase(getBundle().getString("env"))) {
// this is not dry run so reset
getBundle().setProperty(ApplicationProperties.DRY_RUN_MODE.key,false);
}
}