2017-02-12 29 views
0

我有一个黄瓜功能像这样的:如何在多个文件上运行一个Cucumber(使用量角器)场景?

@MainSuite 
Scenario: Verify that user can login 
    Given I can see the login form 
    Then I set a username 
    And I set a password 
    And I click in Login button 
    Then I see the "wrong-password" message 

我需要检查用户可以在5个不同的页面登录。 我需要在5个不同的地方运行该功能。 这就像我需要在/login.html,/old_login.html,/after_restore_password.html和更多内容中运行该功能(这只是一个示例)。

你知道该怎么做吗?

目前,我只有一个文件硬编码。显然我需要改变它。

this.Given(/^I can see the login form$/, function(done) { 
    this.goTo('login.html'); 
    browser.wait(EC.visibilityOf(this.loginFormContainer)); 
    done(); 
}); 

回答

0

创建一个包含您可以转到的不同登录页面的对象。

如果需要执行任何额外的代码,请在步骤def中包含if语句。

this.Given(/^I can see the "(.*)" login form$/, function(loginPage, done) { 
    var logins = { 
     login : "login.html", 
     afterpasswordreset: "after-password-reset.html" 
    } 
    loginPage = loginPage.toLowerCase().replace(" ", ""); 
    this.goTo(logins[loginPage]); 
    browser.wait(EC.visibilityOf(this.loginFormContainer)); 
    done(); 
}); 

让无论是单独的方案或为每个登录的变化特征文件,或者简单地为他们创造

编辑

这里是我会怎么实现的场景勾勒出一个方案概述:

@MainSuite 
Scenario Outline: Verify that user can login 
    Given I can see the "<loginType>" login form 
    And I set a username 
    And I set a password 
    When I click in Login button 
    Then I see the "wrong-password" message 

Examples: 
    | loginType    | 
    | Login     | 
    | After Password Reset | 
+0

Nop。您将有2次执行给定规则,但每个下一行只有一个(当时和之后) –

+0

您是什么意思?给定时间然后并不总是必须在三组中。这本身就是一种误解。它必须具有足够的描述性,这就是为什么“And”和“But”语法规则到位的原因。 –

+0

检查我在主要问题中写的情景。你如何写你的建议黄瓜escenario? (用这个例子编辑你的答案,你会发现有问题。) –

相关问题