在每个方案之前执行步骤? (黄瓜+量角器+角形)

时间:2018-07-27 15:26:35

标签: angular protractor cucumber e2e-testing cucumberjs

我需要为我的angular 5应用程序创建e2e测试。我们正在使用黄瓜和量角器。

在某些情况下,我有具体的清单步骤。

这是一个示例:

Scenario: I need do process below before some scenarious
    Given I load a html page
    When I filling the form
      | name | testname|
      | gender        | male|
      | date | 08/18            |
      | surmane       | TestSurname            |
	And I click the checkbox
    And I click the "SAVE AND CONTINUE" button
    And I submit the details
    Then I should be redirected to the second page

然后在其他情况下,我需要从第一种情况开始执行相同的步骤。

Scenario: Scenario 2 - i need the same from scenario 1
Given All steps from scenario 1 done and i redirected to the second page
	...
	
Scenario: Scenario 3 - i need the same from scenario 1
Given All steps from scenario 1 done and i redirected to the second page
	...

是否存在将所有步骤都放在一个场景中并使用它的解决方案?

如何为此创建一个“ Before”挂钩?例如

Before('@copyScenario', () => {
 //.......list of steps
});

我不想复制/粘贴...任何想法吗?

2 个答案:

答案 0 :(得分:1)

执行此操作的最佳方法是陈述方案的意图,而不是在功能文件中列出操作。

BDD(因此将黄瓜作为BDD工具)的目的是探索您正在实现的功能,能力和业务需求,以便业务人员(通常是非技术人员)具有相同的理解开发和测试该功能的人。

这意味着您在答案中写的场景将更像:

Scenario: Registering a user
   Given I am on the registrations page
   When I fill in my personal details
    And submit the registration form
   Then I should be taken to the dashboard

之后,您将编写一个新步骤来将其编译为以下内容:

Scenario: Searching the site
   Given I have registered an account
     And I am logged in
   When I search the site for "product"
   Then I should see results for "product"

这-从非技术人员的眼中,他们可以通过使每个测试步骤更加原子化来了解测试背后的意图,并使您的生活更轻松(使他们能够功能相同的所有地方都使用,无需复制和粘贴。

还有其他选择,但我在这里不作说明,因为我认为以上建议可以长期为您提供帮助。

答案 1 :(得分:0)

这可以通过在黄瓜中称为“背景”的关键字来完成。 您应该使用如下所示:

  Background: Always do these steps before executing any scenarios
   Given ....
   When ....
   Then ....

Scenario 1: Do after performing Background
...
Scenario 2: Do after performing Background
...

上面的脚本将如下所示:-将执行后台步骤,然后执行场景1,然后在完成场景1之后,再次执行后台步骤,然后再执行场景2。