问题描述
我一直很难尝试使用 TestNG 和 Cucumber 设置在 xml 文件上传递参数。测试确实并行运行,但没有传递参数,返回空值。根据 SmartBear 文档,@Parameters
应该可以工作,但不能。下面是代码的一个片段。想知道是否有人遇到过这个问题。
POM
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>3.0.0-M4</version>
<configuration>
<suiteXmlFiles>
<file>src/test/resources/testng.xml</file>
</suiteXmlFiles>
<properties>
<property>
<name>dataproviderthreadcount</name>
<value>2</value>
</property>
</properties>
XML_FILE
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYstem "https://testng.org/testng-1.0.dtd">
<suite thread-count="2" name="Suite" parallel="tests">
<test name="Chrome">
<parameter name="os" value="Mac OSX 10.14"/>
<parameter name="browser" value="chrome"/>
<classes>
<class name="test.java.com.cucumber.TestRunner"/>
</classes>
</test> <!-- Test -->
<test name="Firefox">
<parameter name="os" value="Mac OSX 10.14"/>
<parameter name="browser" value="ff"/>
<classes>
<class name="test.java.com.cucumber.TestRunner"/>
</classes>
</test> <!-- Test -->
</suite> <!-- Suite -->
测试者
@CucumberOptions(features = "classpath:features",glue = "test.java.com.step_deFinitions",tags = "@signin")
public class TestRunner extends AbstractTestNGCucumberTests {
@Override
@DataProvider(parallel = true)
public Object[][] scenarios() {
return super.scenarios();
}
}
传递参数的方法
@BeforeClass
@Parameters(value={"os","browser"})
public DesiredCapabilities CBT_ChromeDesiredCap(String os,String browser){
HashMap<String,String> cbtoptions = new HashMap<String,String>();
DesiredCapabilities caps = new DesiredCapabilities();
caps.setCapability("name","Demo");
caps.setCapability("os",os);
caps.setCapability("browser",browser);
caps.setCapability("version","72");
caps.setCapability("screenResolution","1366x768");
caps.setCapability("record_network","false");
caps.setCapability("cbt:options",cbtoptions);
return caps;
}
SmartBear 文档 https://support.smartbear.com/crossbrowsertesting/docs/automated-testing/parallel-testing.html
黄瓜文档 https://cucumber.io/docs/guides/parallel-execution/
如果您需要更多信息,请发表评论并感谢您的帮助!
解决方法
我可以使用以下解决方案解决它。
Reporter.getCurrentTestResult().getTestContext().getCurrentXmlTest().getParameter("browser")