首页 > 解决方案 > 如何在黄瓜钩子方法中读取标签的值

问题描述

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

标签: cucumberhookcucumber-java

解决方案


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

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

...

演员(做事的人)以及他们是否登录都非常重要,不能被排除在场景语言之外。我强烈建议你在这里改变你的方法,不要为此使用标签。@


推荐阅读