研究: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 []数组,因此测试方法 verifyShare 会打印以下内容。
its twitter
twitter
its facebook
facebook
但我得到的实际输出是
its twitter
twitter
facebook
其脸书缺失。
即,它会跳过 if条件,第二次时间执行测试方法 verifyShare 。
此外,如果我在TestNG.xml中添加三个值,例如value =&#34; twitter,facebook,whatsapp&#34;, facebook&amp;的if条件被跳过WhatsApp的价值观。
非常感谢任何帮助
答案 0 :(得分:0)
知道了。 问题很愚蠢,我没有在Paramter上使用Trim()。 因此,价值是“facebook”而不是“facebook”。
:D:P