2017-09-28 47 views
0

考虑我有以下特征文件:调用从另一个特点一个特征文件中黄瓜

Login.feature

Feature: Login on website 

Scenario: Login verification on site 
    Given Navigate to site login page 
    When User enters username 'admin1' 
    And User enters password 'admin1' 
    And User clicks on login button 
    Then User should not be able to log in successfully 

Home.feature

Feature: Welcome Page Verification 

Scenario: Verify the page that comes after login 
    Given Login is successfully done 
    When The page after login successfully appears 
    Then The test is done 

在Home.feature文件,我需要先执行Login.feature然后调用home.feature。所以当我从亚军测试中执行回家时,它将依次执行登录和回家。

RunnerTest.java

import org.junit.runner.RunWith; 

import cucumber.api.CucumberOptions; 
import cucumber.api.junit.Cucumber; 

@RunWith(Cucumber.class) 


@CucumberOptions(strict = false, features = { 
     "src/test/resources/Features/Home.feature", 
      }, glue = { "tests" }, plugin = "html:target/cucumber-reports", format = { "pretty", 
     "json:target/cucumber.json" }, tags = { "[email protected]" }) 

public class RunnerTest {} 

感谢&问候, MEGHA

回答

1

你并不需要从第二个特点叫第一个特征。你需要做的是在第二个功能中可以登录你的步骤。它可以通过调用你在实现你的第一个功能时创建的代码来实现。

第一个功能是您在第一次执行登录时可能会写入的内容。在这一过程中,您将步骤和代码,这些步骤打电话来登录你进来。

那种你应该创造的(对不起所有的例子都是红宝石我不这样做JAVA)

  1. A码它知道它的名字,电子邮件地址和密码
  2. 的方法测试用户的实体,可以用户测试用户登录

然后,你可以写一个helper方法,如

def login_as(user) visit login_path fill_in :email, with: user.email fill_in :password, with: user.password submit_form end

,现在在你的第二个功能,你可以有类似

Given I am an admin 
When I login 

和实施这些步骤

Given 'I am an admin' do 
    # note create_user is a method you would have created when doing user 
    # registration/creation 
    @i = create_user(type: admin) 
end 

When "I login" do 
    login_as @i 
end 

和地方,你将有一些辅助方法

module StepHelperMethods 
    def create_user 
    ... 
    return user 
    end 

    def login_as(user) 
    ... 
    end 
end 
World StepHelperMethods 

您的代码重用始终发生在更低的级别。理想情况下,您应该重新使用您之前创建的帮助程序方法,以使其他方案正常工作。你也可以直接调用步骤(嵌套步骤),但这是一件非常糟糕的事情。

0

试试这个:

创建RunnerLogin类调​​用Login.feature

在你的脚步类,在实现 Given Login is successfully done,这样做的方法:

@Given("^Login is successfully done$") 
public void login_is_successfully_done() { 
    Thread T1 = new Thread(new Thread(() -> { 
     JUnitCore jExecFeature = new JUnitCore(); 
     Result result = jExecFeature.run(RunnerLogin.class); 
    }));     

    T1.start();     
    T1.join(); 
} 
相关问题