TESTNG IF语句不使用xml的Passed Parameters

问题描述 投票:0回答:1

研究: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条件。

任何帮助都非常感谢

testng parameter-passing testng-dataprovider
1个回答
0
投票

得到它了。问题很愚蠢,我没有在参数上使用Trim()。结果是价值是“facebook”而不是“facebook”。

:D:P

© www.soinside.com 2019 - 2024. All rights reserved.