如何使用TestStepListener跳过QAF中的teststep?

时间:2018-03-26 12:16:41

标签: selenium bdd qaf

我正在使用QAF作为我的测试自动化框架。

我想跳过生产环境中的特定测试步骤。如何使用TestStepListener跳过执行BDD测试步骤?

以下是一个用例示例: 对于购物车应用程序,我已经开发了200多个场景。我正在测试环境中执行所有方案。现在我想在生产环境中执行所有场景。现在我想跳过生产环境的最后付款和订单审核步骤。我怎么能这样做?

1 个答案:

答案 0 :(得分:1)

请您提供用例的详细信息?如果我的理解是正确的,您不希望在生产环境中执行特定步骤。您可以使用步骤侦听器跳转到特定步骤索引但不跳过当前步骤。其中一种方法是采用高级步骤的小组步骤。例如,而不是在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步骤可以针对不同包中的不同环境实施。在运行时配置步骤提供程序包。

另一个技巧是在步骤监听器中设置并重置干运行模式。例如,在步骤定义中,您可以提供其他元数据。在步骤监听器依赖于元数据,如果需要在方法之前设置干运行模式并在方法之后重置它。

步骤定义:

@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);
    }
}