我有138个测试长的场景,允许我测试工作流是否正常工作。
但是,我不是一个很大的粉丝,不必重复相同的6行,允许我以管理员身份登录,这是:
Given I am on "user/login"
And I fill in "admin@admin.com" for "name"
And I fill in "admin" for "pass"
And I press "Log in"
Then I should get a "200" HTTP response
And I should see "Dashboard"
到目前为止,我重复了这个部分6次,而且我打算再花一些时间来进行其他一些测试。
所以我的问题如下:有没有办法通过FeatureContext文件或任何其他方式使这些行重复?
提前谢谢
所以我就这样做了:
我没有一个接一个地调用Gherkin句子,而是解析了vendor/
目录,找到了如何制作句子的例子。
我的功能连接我看起来如下:
/**
* @throws ElementNotFoundException
* @throws Exception
* @Given I am the administrator
*/
public function iAmTheAdministrator(){
$this->visitPath('/user/login');
$element = $this->getSession()->getPage();
$element->fillField('name', 'admin@admin.com');
$element->fillField('pass', 'admin');
$element->pressButton("Se connecter");
$this->assertSession()->pageTextContains('Dashboard');
}
这很直接,效果很好
答案 0 :(得分:2)
我知道有两种方法可以重复这些步骤。一个是后台步骤,另一个是运行步骤的片段。
后台步骤在每个场景开始时运行。
Background:
Given I have done this
And this other thing
Scenario: Do stuff
When I do this
Then stuff should happen
仅当所有测试具有相同的启动程序时才有效...
每当你打电话给我们时,片段就会运行,我认为你更愿意
Given I have logged in as an administrator
步骤定义:
Given(/^I have logged in as an administrator$/) do
steps %{
Given I am on "user/login"
And I fill in "admin@admin.com" for "name"
And I fill in "admin" for "pass"
And I press "Log in"
Then I should get a "200" HTTP response
And I should see "Dashboard"
}
end
这允许您只使用一个步骤,您可以随时调用该步骤来执行多个步骤
希望这有帮助。