我使用的硒+黄瓜为我的自动化项目,并使用Java编写。我写的,我在每一个场景重复4-5登录步骤的特征文件。下面是在每个场景中得到重复的登录行。
Scenario: Display the relevant items assigned when logged in as an testUser
Given I am on the login page
And I fill email with valid testUser email address
And I fill password with valid testUser password
And I press Log in
When I click on the selector
Then I should see all the items assigned to my testUser account
在这里,keywork“为testUser”是参数。有时候,同样的步骤将与其他用户重复诸如“stageUser”。对于此类步骤,并黄瓜提供了一种方式来概括以某种方式这些步骤?因为每个场景与因此这些6行使得开始scearios看起来更大,并用这些重复的步骤。
任何意见,将不胜感激。
你应该考虑将共同步骤的背景。似乎是一个黑客攻击的一位,但你可以提到在如下场景的描述中的用户。
Background:
Given Do given
When Do when
Then Do then
Scenario: User is - Test User One
And user name is
Scenario: User is - Test User Two
And user name is
然后捕获该用户在之前钩。然后,用户将横跨在方案中的步骤可用。
private String user;
@Before
public void before(Scenario scen) {
this.user = scen.getName().substring(scen.getName().indexOf('-') + 2);
}
使用@Before和@After注解之前运行,每个场景分别后。在情况下,当我们需要进行一些全局设置/清理:@BeforeSuite和@AfterSuite
写更好的方案和步骤。你们都是关于这样的重复是痛苦的,你怎么样登录。相反,写大约只有你在做什么步骤;这些更容易被重用。
所以...
Scenario: Login
Given I am registered
When I login
Then I should be logged in
再后来
Feature: Something that requires me to be logged in
Background
Given I am logged in
Scenario: Do something
When I do something
Then something should be done
看我怎么都降低了一大堆背景弄成更加简单和抽象的。
我会在实施给一些提示这里
Given I am logged in
@i = create_registered_user
login(user: @i
end
When I login
login(user: @i)
end
Given I am registered
@i = create_registered_user
end
你可以把这个方法与任何复杂性。注意如何在最后一个场景都在使用我们没有注册的情况相对复杂的行为或功能甚至正在意识到这一点(注册登录的一部分)。