对于在每个场景之前真正需要设置的内容,然后使用BeforeScenario。
有时,某些情况只需要设置,但对于其中很大一部分。例如,如果场景需要常规用户帐户"存在,然后它继续作为该用户登录并做一些事情。
您可以创建一个@BeforeScenario @RegularUser方法,该方法将针对标记为@RegularUser的每个方案运行。所以场景最终看起来像:
@RegularUser
Scenario login as a regular user
Given I am on the login page
When I login to a regular user account
Then the welcome screen is displayed
替代方案是
Scenario login as a regular user
Given a regular user exists
And I am on the login page
When I login to a regular user account
Then the welcome screen is displayed
"普通用户存在"将与创建常规用户的方法相关联。
使用第一种方法,我可以制作@AfterScenario @RegularUser,它将在方案结束后删除用户。所以这似乎是一件好事"。
但从BDD的角度来看,第二种方法看起来更好。但它的局限性在于,在场景结束时没有任何事情可以删除用户。
哪种方法更好?
答案 0 :(得分:1)
在我看来,我会先选择。
问题是,两个选项都不太好,因为通常你添加了这个场景的上下文:
In order to ..
As a Regular User
I need to ..
那应该显示你打算运行这个场景的意图。创建 RegularUser 的过程不会为方案本身增加价值。
然后,如果您需要在拥有普通用户的情况下进行确认 - 那么就可以了。但在我看来,这不是重点 - 然后第二个选项不是那么好 - 我们有上下文来添加这样的信息。
这就是为什么,我认为第一个选择(不理想,但更好的那个)是很好的解决方案。
我不知道Behat功能是按上下文设置用户,但标签选项应该更具弹性。