java - TestNG:从 Maven 将参数传递给 DataProvider

标签 java maven testng testng-dataprovider

我似乎尝试了所有可能的方法来实现这一目标,但没有运气。我在 DataProvider 中有一个复杂的代码(它确实以复杂的方式收集数据),我希望最终由 CI 对其进行参数化。

这里的第一个问题是如何读取 DataProvider 中的参数。

1 一种方法是通过以下方式从 testng.xml 获取参数:

    String lolo = context.getCurrentXmlTest().getParameter("testcases");

但这并不能解决问题,因为 .xml 文件必须是静态的,而我想从 Maven 向它传递参数。

2 在我的例子中,另一种方法是从 @Factory 读取参数:

    String testCaseDataFilename = (method.getAnnotation(Factory.class)).parameters()[0];

@Factory 在哪里:

    @Factory(dataProvider="dataProviderMethod", parameters = {"authentication-testcases.json"})

它也可以工作,但同样不能解决问题,因为现在参数必须在java测试文件中进行编码,而我的@Factory本身使用@DataProvider,并且它无法隐式从Maven接收参数。

此外,我还有其他测试参数,这些参数是由Maven传递的,但它们仅在@Test测试中使用,而不是DataProvider,@BeforeSuite成功接收它们。

我会尝试简化:

我正在调用maven

-Dtestname=signUp -Dmyparam=1 test

我希望我的 DataProvider 接收 Dmyparam 的这个值并使用它来收集数据。我所实现的只是使用 @BeforeSuite 接收此数据并在全局范围内设置它,但问题是 DataProvider 在数据设置之前被调用。

最佳答案

-D 正在设置系统属性。

您可以使用 System.getProperty("MyParam") 在代码中获取它。

关于java - TestNG:从 Maven 将参数传递给 DataProvider,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38834093/

相关文章:

java - 何时在 Java 中使用单一方法接口(interface)

Java Regex 组导致 Stackoverflow 问题

java - 不可解析的 POM,已看到 END_TAG,spring-security-bom

java - 使用maven同时启动两个spring boot应用程序

android - maven-android-plugin 是否支持多个源文件夹?

java - Statement.cancel() 及其线程安全保证

java - 将 MongoTemplate 与 MongoClient 和 UserCredentials 结合使用

java - 同时使用@DataProvider 和@Parameters

java - 管理测试用例,存在于单个文件中

java - 如何使用 Selenium 在下拉列表中选择值?