如何在黄瓜钩子方法中读取标签的值

时间:2019-06-27 04:42:37

标签: cucumber hook cucumber-java

我正在传递黄瓜BeforeActions钩子的标签@Before,我想将其用作Before方法中的参数。

@Before("@requireLogin")
    public void defaultLogin() {
          do login here;
    }

@Before("@newUserA")
    public void login() {
          do login with a user called "newUserA";
    }

首先,@ Before我使用默认的登录用户,但在另一个@Before中,我想发送标签作为提示,以将该用户用作登录用户名。

现在,我不确定如何在登录方法中读取“ newUserA”。 任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

您不应使用标签登录。登录是业务功能,在每种需要登录的场景中都需要提及。如果您有很多需要登录的方案,则可以将登录步骤置于后台。例如

Feature: Admin xxx

Background:
  Given I am logged in as an admin

Scenarios Do foo
  When I foo
   ...

Scenario: Do bar
  When I bar

然后,您可以使用许多不同的登录步骤来明确指定您可能具有的不同需求,如果您确实很聪明,则可以让每个步骤将工作委托给助手方法,以免重复代码,例如

# Login Steps

Given "I login as an admin" do
  @i = create_user(role: 'admin')
  login as: @i
end

Given "I login as Fred" do
  @fred = create_user(first_name: 'Fred')
  login as: @i
end

Given "Fred is logged in" do
  # this one assumes that Fred has already been created
  login as: @fred
end

...

演员(正在做事情的人)以及他们是否已登录非常重要,以至于不能脱离场景语言。我强烈建议您在此处更改方法,而不要为此使用标签。   @