Reading parameter values from Testng.xml file in c

2019-02-25 06:37发布

I'm able to run testng scripts upon integrating with cucumber. I've followed the exact steps defined in http://automatictester.co.uk/2015/06/11/basic-cucumberjvm-selenium-webdriver-test-automation-framework/ link.

Now I’ve one more requirement. can you explain me how to read values from parameters tag of testng.xml. See below example:

<test name="ascentis.LoginDemo.Firefox">
    <parameter name="BrowserName" value="Firefox" />
    <parameter name="Environment" value="local" />  
    <packages>
        <package name="runnerFiles.*"/>
    </packages>
</test>

I’ve to read BrowserName and Environment values from parameters tag. I’ve tried to use @parameters for @Before method of cucumber but it didn’t work out and gave exception that @Before hook only accepts one parameter that too of type scenario. can you explain me how to read values from parameters tag to access in stepDefinations of cucumber.

1条回答
戒情不戒烟
2楼-- · 2019-02-25 07:31

Well, I'm not sure if parametrisation of CucumberJVM tests on testng.xml level is what you are really looking for. However, if you really need to read parameters from testng.xml file in your CucumberJVM framework, here is a (dirty) solution for you:

  • make DownloadFeatureRunner extend CustomRunner instead of AbstractTestNGCucumberTests
  • include parameter in yout testng.xml file: <parameter name="someParam" value="someValue"/>
  • and also implement you new parent class:

    public class CustomRunner implements IHookable {
        public CustomRunner() {
        }
    
        @Parameters("someParam")
        @Test(
                groups = {"cucumber"},
                description = "Runs Cucumber Features"
        )
        public void run_cukes(String someParam) throws IOException {
    
            System.out.println(someParam);
            (new TestNGCucumberRunner(this.getClass())).runCukes();
        }
    
        public void run(IHookCallBack iHookCallBack, ITestResult iTestResult) {
            iHookCallBack.runTestMethod(iTestResult);
        }
    
    }
    

As you can see, you can access value of the parameter. It's up to you what you want to do with it now.

查看更多
登录 后发表回答