2014-02-11 2 views
1

Как передать значения между двумя шагами в огурце JVM?<Cucumber-JVM> передать значения между этапами в огурце

В следующем сценарии я хочу получить доступ к имени пользователя при входе в шаг Затем. Как передать значения между двумя шагами в огурце JVM? В настоящее время я обращаюсь к ним, сохраняя это значение в общедоступной переменной. Является ли подход правильным (или) любым другим способом, я могу получить доступ к тем, которые находятся между этапами?

Сценарий:

Данный пользователь находится на странице входа Когда пользователь вводит имя пользователя в качестве user1 и пароль в pass1 и нажал на кнопку входа Затем опубликовать Войти страница отображается

@When("^user enters username as ([^\"]*) and password as ([^\"]*)$") 
public void enterLoginDetails(String username,String password){ 
driver.findElement(By.id("username")).sendKeys(username); 
driver.findElement(By.id("password")).sendKeys(password); 
} 

В следующем определение шага, я хочу получить доступ к имени пользователя из предыдущего шага определения

@Then("^post login page is displayed$") 
public void postLoginValidation(){ 
// i would like access username and verify username is displayed 
} 

Спасибо в: Advance

+0

ищет ответ на этот вопрос. могли ли вы найти что-либо, кроме следующего ответа: –

+0

Возможный дубликат: https://stackoverflow.com/questions/26422470/good-practice-to-pass-variables-between-cucumber-jvm-steps – Marit

+0

Возможный дубликат [Хорошая практика передачи переменных между шагами огурца-jvm] (https://stackoverflow.com/questions/26422470/good-practice-to-pass-variables-between-cucumber-jvm-steps) – Marit

ответ

1
public your class { 

    private String usr; 

    @When("^user enters username as ([^\"]*) and password as ([^\"]*)$") 
    public void enterLoginDetails(String username,String password){ 

     usr = username; 
     ... 
    } 

    @Then("^post login page is displayed$") 
    public void postLoginValidation(){ 

     //do something with usr 

    } 

} 
+0

Любая другая альтернатива для передачи значений между этапами без использования переменных. – user3188928

0

Вы можете делиться между шагами с помощью переменных, как это предлагает Бала.

Другим решением на Java является использование инъекции зависимостей. Cucumber-JVM поддерживает множество различных схем инъекций зависимостей. Одна из них - Весна. Зависимости могут быть доступны там, где они нужны, с помощью аннотаций. Использование Spring - хороший вариант, если ваш проект уже использует Spring. В противном случае это может быть слишком большим и громоздким.

Простая в использовании альтернатива Spring, заключается в использовании PicoContainer.

Для получения дополнительной информации о любой, пожалуйста, посмотрите на:

http://www.thinkcode.se/blog/2017/06/24/sharing-state-between-steps-in-cucumberjvm-using-spring

http://www.thinkcode.se/blog/2017/04/01/sharing-state-between-steps-in-cucumberjvm-using-picocontainer

Смежные вопросы