Как передать параметр из файла testNG.xml в огурцы Сценарии / шаги - PullRequest
0 голосов
/ 20 сентября 2019

В настоящее время я работаю над фреймворком Cucumber + MVN + TestNG + selenium.У меня есть переменная "имя браузера", которую я определил в файле .properties, и я могу получить доступ к этой переменной в моих шагах огурца правильно.Но теперь я пытаюсь переопределить эту переменную из самого файла TestNG.xml как параметр типа

My TestNG.xml:

<?xml version="1.0" encoding="UTF-8"?>  
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">  
<suite name="Sample Cucumber TestNG Maven project" verbose="1" thread-count="1" parallel="methods" configfailurepolicy="continue">  
     <test name="Cucumber with TestNG">  
        <parameter name="browsername" value="Firefox"></parameter>

         <classes>
             <class name="testRunner.TestRunner">  
                 <methods>
                     <include name="scenario"/>  
                 </methods>
            </class>
        </classes>
    </test>
</suite>

Мой Environment.properties ниже, чем япытаюсь переопределить, используя параметр TestNG

browsername=Chrome
browser.url=https://www.gmail.com

My Stepdefinition:

@Parameters("browsername")
    @Given("Launch the application")
    public void launch_the_application(String browsername) {
     Properties property = prop.getProperty();
     driver=DriverUtils.createDriver(driver, browsername);
     driver.get(property.getProperty("browser.url"));
    }

Мой файл TestRunner

    package testRunner;

import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;

import cucumber.api.CucumberOptions;
import cucumber.api.testng.AbstractTestNGCucumberTests;
import cucumber.api.testng.CucumberFeatureWrapper;
import cucumber.api.testng.PickleEventWrapper;
import cucumber.api.testng.TestNGCucumberRunner;


@CucumberOptions(features=("src\\test\\resources\\features\\Navigation.feature"),
                 glue= {"com.homemadetesting.stepdefinition","utils"},
                 strict = true,
                 plugin= {"pretty","html:target/cucumber"},
                 tags= {"@testme"}
        )


public class TestRunner {
private TestNGCucumberRunner testNGCucumberRunner;

    @BeforeClass(alwaysRun = true)  
    public void setUpClass() throws Exception {  
        testNGCucumberRunner = new TestNGCucumberRunner(this.getClass());  
  } 


     @Test(groups = "Cucumber", description = "Runs Cucumber Feature", dataProvider = "scenarios")  
        public void scenario(PickleEventWrapper pickleEvent, CucumberFeatureWrapper cucumberFeature) throws Throwable {  
            testNGCucumberRunner.runScenario(pickleEvent.getPickleEvent());  
      } 
      @DataProvider  
      public Object[][] scenarios() {  
            return testNGCucumberRunner.provideScenarios();  
      }  
      @AfterClass(alwaysRun = true)  
        public void tearDownClass() throws Exception {  
            testNGCucumberRunner.finish();  
      } 

}

Я получаю ошибку ниже:

[31mcucumber.runtime.CucumberException: Step [Launch the application] is defined with 1 parameters at 'com.homemadetesting.stepdefinition.ShopAssistStepdef.launch_the_application(String) in file:/C:/Users/XXXXX/eclipse/eclipse/JavaWorkspace/heb/target/test-classes/'.However, the gherkin step has 0 arguments.

Пожалуйста, посоветуйте, как мне справиться с этим

1 Ответ

0 голосов
/ 20 сентября 2019

В вашем методе launch_the_application вы ожидаете один аргумент, но ваше регулярное выражение не захватывает никаких аргументов.Вместо этого он должен выглядеть примерно так:

@When("^Launch the application \"([^\"]*)\"$")

А затем в вашем файле функций:

When Launch the application "browser"
...