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

How to read tag's value in cucumber hooks method

我正在为我的黄瓜 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"。 任何帮助将不胜感激。

您不应使用标签登录。登录是业务功能,需要在每个需要的场景中提及。如果你有很多场景需要你登录,你可以将登录步骤放在后台。例如

Feature: Admin xxx

Background:
  Given I am logged in as an admin

Scenarios Do foo
  When I foo
   ...

Scenario: Do bar
  When I bar

然后您可以使用多个不同的登录步骤来清楚地指定您可能有的不同需求,如果您真的很聪明,您可以让每个步骤 def 将工作委托给辅助方法,以避免重复代码,例如

# 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

...

演员(做事的人)以及他们是否登录,太重要了,不能被排除在场景语言之外。我强烈建议您在此处更改方法,不要为此使用标记。 @