Как пропустить тестовый шаг в QAF, используя TestStepListener?
Я использую QAF в качестве моей инфраструктуры автоматизации тестирования.
Я хочу пропустить конкретный этап тестирования в производственной среде. Как я могу пропустить выполнение BDD-теста, используя TestStepListener?
Вот пример использования: Для приложения корзины покупок я разработал более 200 сценариев. Я выполнял все сценарии в тестовой среде. Теперь я хочу выполнить все сценарии в производственной среде. Теперь я хочу пропустить последние шаги оплаты и проверки заказа в производственной среде. Как я могу это сделать?
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
Шаг может иметь реализацию для разных сред в разных пакетах. настроить пакет поставщика шагов во время выполнения.
Другой трюк устанавливается и сбрасывает режим пробного запуска в пошаговом прослушивателе. Например, в своем определении шага вы можете указать дополнительные метаданные. На шаге слушатель зависит от метаданных, если требуется установить режим пробного запуска в методе before и сбросить его после метода.
Определение шага:
@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);
}
}