无法使用 Cucumber 和 TestNG 在 xml 文件上传递参数
Posted
技术标签:
【中文标题】无法使用 Cucumber 和 TestNG 在 xml 文件上传递参数【英文标题】:Unable to pass parameters on a xml file using Cucumber and TestNG 【发布时间】:2021-09-19 10:50:41 【问题描述】:我一直在尝试使用 TestNG 和 Cucumber 设置在 xml 文件中传递参数。测试确实并行运行,但未传递参数,返回 null。根据 SmartBear 文档,@Parameters
应该可以工作,但不能。下面是代码的sn-p。想知道是否有人遇到过这个问题。
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/
如果您需要更多信息,请发表评论并感谢您的帮助!
【问题讨论】:
【参考方案1】:我可以用下面的方法解决它。
Reporter.getCurrentTestResult().getTestContext().getCurrentXmlTest().getParameter("browser")
【讨论】:
以上是关于无法使用 Cucumber 和 TestNG 在 xml 文件上传递参数的主要内容,如果未能解决你的问题,请参考以下文章
我们可以将TestNG与Selenium WebDriver和Cucumber一起使用吗? [关闭]
需要帮助在 junit 运行中使用 cucumber、selenium、maven、TestNG 运行跨浏览器(多浏览器)测试
如何将参数传递给 Cucumber 中的@before 方法?