Как писать числа в сценариях с огурцом

Я хотел бы написать номер на странице огурца. Пожалуйста, дайте мне знать, как я могу написать это.

Схема сценария: введите неверный URL-адрес

Given the context "Invalid URL" is open on "Market" 
  When user is on the error 404 page
  Then page not found message is displayed

Но я заметил, что 404 берется в качестве параметра.


person user2340124    schedule 09.09.2015    source источник


Ответы (2)


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

@When("^When user is on the error \"(\\d+)\" page$")
public void When_user_is_on_the_error_page(int errorNum) throws Throwable {

...

}

Это будет обрабатывать 1 или более цифр. \d представляет собой цифру, а знак + представляет «1 или более».

Мне лично нравится заключать мои параметры в двойные кавычки (""), потому что тогда IDE понимает, что это параметр, и может помочь вам с автозаполнением и т. д.

Если вы хотите ограничить его более конкретными числами (скажем, только тремя цифрами), вы можете уточнить свое регулярное выражение до чего-то вроде [\d]{3}. У Oracle есть уроки по регулярному выражению Java здесь.

person burythehammer    schedule 09.09.2015
comment
Но я не хочу, чтобы огурец принимал его в качестве параметра. - person user2340124; 09.09.2015
comment
Вам не обязательно использовать захваченный int errorNum, если хотите. В качестве альтернативы вы можете использовать регулярные выражения без захвата. Хотя мне это кажется излишеством. stackoverflow.com/questions/3512471/non-capturing-group - person burythehammer; 09.09.2015
comment
не используйте регулярное выражение, просто используйте строку. В Cuke(ruby) это будет When "the user is on the error 404 page" do ... - person diabolist; 11.09.2015

С

When user is on the error 404 page

Вы можете использовать в шагах:

@When("^When user is on the error (.*) page$")
   public void When_user_is_on_the_error_page(int errorNum) {
      ...
    }

(.*) возьмет все, что находится в этом слоте, и будет использовать его как переменную, которая будет определена типом между (). В этом случае «400» будет преобразовано в целое благодаря:

(**int** errorNum){ ...}

Если у вас нет опыта работы с регулярными выражениями, это может быть очень полезно, так как ваши шаги будет легче читать, поскольку (.*) не имеет предопределенного типа.

person Guilherme Granato    schedule 11.12.2019
comment
Добро пожаловать в СО. Насколько я вижу, другой человек предложил вырезать код состояния и передать его в переменную. Вы уверены, что 400 будет правильно преобразовано в число? Если вы считаете, что ваш ответ лучше по сравнению с существующим принятым ответом, добавьте объяснение в свой пост. - person Maxim Sagaydachny; 11.12.2019