【发布时间】:2016-08-08 16:18:56
【问题描述】:
似乎我尝试了所有可能的方法来实现这一点,但没有运气。我在 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 被称为 before 数据设置。
【问题讨论】:
-
你在工厂里试过
System.getProperty("myparam")而不是param吗? -
看来您的问题已在此处得到解答:stackoverflow.com/questions/13245411/…
-
@JulienHerr 这条评论拯救了我的一天,它真的很管用,你可以将它作为 aswer 发布
-
@danmitch 不完全是,建议使用Parameters注解,但我不能这样做,因为我的DataProvider不能接受这些
标签: java maven testng testng-dataprovider