研究:Selenium/Testng - IF statement not working when using parameter from testng.xml已经通过上述帖子,但找不到答案。
问题:这是我的TestNG.xml
<test name="abc">
<classes>
<class name="com.gunjan.automation.test.abcTesting">
<parameter name="shareType" value="twitter, facebook"></parameter>
</class>
</classes>
</test>
这是我的Java文件片段,我在其中放置了测试方法
@Test(groups = {"web"}, dataProvider = "getData", priority = 7)
public void verifyShare(String shareType) {
String data = shareType;
if(data.equals("facebook"))
System.out.println("its facebook");
if(data.equals("twitter"))
System.out.println("its twitter");
System.out.println(shareType); }
这是数据提供者方法
@DataProvider(name = "getData")
public Object[][] getData(ITestContext context) {
String paramter = context.getCurrentXmlTest().getClasses().get(0).getLocalParameters().get("shareType");
String[] paramArray = paramter.split(",");
Object[][] finalReturn = new Object[paramArray.length][1];
for(int i = 0; i < paramArray.length; i++)
{
finalReturn[i][0] = paramArray[i];
}
return finalReturn; }
由于DataProvider返回一个object []数组,因此Test方法verifyShare应打印以下内容。
its twitter
twitter
its facebook
facebook
但我得到的实际输出是
its twitter
twitter
facebook
它的脸书失踪了。
也就是说,它会跳过if条件,第二次执行测试方法verifyShare。
此外,如果我在TestNG.xml中添加三个值,如value =“twitter,facebook,whatsapp”,则会跳过facebook和WhatsApp值的if条件。
任何帮助都非常感谢
得到它了。问题很愚蠢,我没有在参数上使用Trim()。结果是价值是“facebook”而不是“facebook”。
:D:P