2014-10-23 2 views
0

Я использую Selenium Webdriver с JBehave. My Jbehave Story содержит несколько сценариев с некоторыми повторяющимися шагами, как показано на следующих шагах, и я создал общую функцию для их выполнения.Продолжить Выполнение после неудачного шага в сценарии JBehave

Scenario: 25. Validate Column from Database 
Given I open application URL 
And I login with username "username1" and password "password1" 
Then I validate the "column1" from database 
Then I validate the "column2" from database 
Then I validate the "column3" from database 
Then I Logout of the Portal 

Это моя общая функция для проверки столбца из базы данных

@Then("I validate the \"$column\" from database") 
public void validateColumnFromDB(String column) 
{ 
    if(column.equals("column1")) 
     getColumnFromDB(propertiesConfiguration.getString("column1")); 
    else if(column.equals("column2")) 
     getColumnFromDB(propertiesConfiguration.getString("column2")); 
    else if (column.equals("column3")) 
     getColumnFromDB(propertiesConfiguration.getString("column3")); 
} 

Я использовал JUnit ErrorCollector(), но после выполнения, JBehave говорит «Все тесты прошли», хотя есть некоторые сбои и ErrorCollector() собрал их. По крайней мере, JBehave должен сказать, что некоторые шаги не удались.

Мой вопрос заключается в том, что я хочу продолжить выполнение в JBehave даже после того, как не удалось выполнить какой-либо из столбцов (один из шагов, упомянутых в сценарии).

Спасибо за вашу помощь

+0

Dont вам нужно Assert в 'validateColumnFromDB', чтобы проверить, если значение было извлечено успешно или нет, это делается в' getColumnFromDB (..) ' – Neo

+0

Yep сделано утверждения' getColumnFromDB() ' – vkrams

+0

покажите свою конфигурацию Embedder. Вы используете jbehave-junit-runner? –

ответ

0

Я бы cheking всех столбцов в одном шаге, таким образом:

Scenario: 25. Validate Column from Database 

Given I open application URL 
Then I validate the following columns: "column1,column2,column3" from database 

@Then("I validate the following columns: \"$columns\" from database") 
public void then_i_walidate_columns_from_databale(List<String> columns){ 
    String columnsWithError = ""; 
    boolean validationResult = true; 
    for(String column : columns){ 
     boolean validationResultOfCurrentColumn = (null != getColumnFromDB(column)); 
     validationResult &= validationResultOfCurrentColumn; 
     if(! validationResultOfCurrentColumn){ 
      columnsWithError += column + " "; 
     } 
    } 
    Assert.assertTrue("The following columns don't pass the validation: " + columnsWithError, validationResult); 
} 
+0

Ну, я привел только один пример. Но мой основной вопрос: я хочу продолжить выполнение, даже если один из шагов завершится неудачно. Там может быть ситуация, когда шаги могут быть независимыми друг от друга, но поток не изменяется. – vkrams

0

Вы метание исключения на этапе JBehave когда возникает ошибка? JBehave полагается на то, что вы заметили ошибку в своем исключении. Мне интересно, использует ли ErrorCollector ваши заброшенные исключения, поэтому ваши ошибки не достигают JBehave, поэтому JBehave считает, что ошибок нет.

+0

Да, вы правы Я использую сборщик ошибок. Но я хочу напечатать эту ошибку на output.html всякий раз, когда возникает какая-либо ошибка. Так или иначе? – vkrams

+0

JBehave предназначен для прекращения выполнения сценария на этапе, который вызывает сбой. Кажется, вы хотите, чтобы JBehave выполнял все этапы, и если несколько шагов не выполняются, сообщите об ошибке для каждого шага. Если это так, то не предполагается, что JBehave будет использоваться. Пусть это сбой на первом шаге, который может привести к сбою. – dragonsfire

0

По умолчанию, история бегуны настроены на отказоустойчивости быстрого, т.е. выполнение остановится на первом не удалось история (но полное исполнение всех сценариев в истории первый). Чтобы создать полноценный просмотр историй (сообщая, сколько историй провалилось), бегуны должны быть включены для запуска историй с ignoreFailureInStories флагом, установленным на true.

Источник: http://jbehave.org/reference/stable/running-stories.html