TestNG尝试/捕获不正常

时间:2014-11-13 08:53:45

标签: java selenium try-catch testng

我正在研究以前建立过的测试自动化框架。该框架从excel文件中读取测试数据,并使用Selenium webdriver控制浏览器并执行测试。

我通过添加从CSV文件读取数据的TestNG类来为此框架添加功能。当前框架中的一些函数使用try / catch。因此,当我从TestNG类调用这些函数时,TestNG总是会说测试通过了,无论如何。

例如,这来自当前的框架;

    if (enterValueInBox.length() >= 1) {
        try {
            browserActions.typeValueInTextBox(myDriver, enterValueInBox);
        } catch (Exception e) {
            System.out.println("enterValueInBox failed");
        }
    }

此if语句位于函数内。这个函数是否有效并不重要,它总是会传入TestNG。即使Selenium找不到元素,例如。

我该如何解决这个问题?我是否必须更改try / catch?

编辑:来自同一功能的另一个例子。该函数基本上由几个if语句组成,就像我在这里展示的两个语句一样。它们都具有相同的签名,因此if语句中包含try / catch。另外值得一提的是,我调用的函数/类不是TestNG类。所以我构建了一个TestNG类,并调用了非TestNG类 - >方法。

   if (backSpaceInTextBox.length() > 1) {
        try {
            wa.handleSeleneseCommand(myDriver, Properties.TIME_TO_WAIT,
                    "niet gelukt");
            browserActions.doBackSpaceInTextBox(myDriver,
                    backSpaceInTextBox);
        } catch (Exception e) {
            System.out.println("Could not do backspace");
        }
    }

2 个答案:

答案 0 :(得分:2)

试试这个:

if (enterValueInBox.length() >= 1)
{
    try
    {
        browserActions.typeValueInTextBox(myDriver, enterValueInBox);
    }
    catch (Exception e)
    {
        Assert.fail("EnterValueInBox failed", e);
    }
}

抛出异常时,您的测试将失败。

答案 1 :(得分:2)

您的测试正在通过,因为测试功能已完成

  • 没有任何断言失败
  • 毫无例外地从测试方法中抛出

在你的情况下,你应该做一个

  • 根本不捕捉异常。声明测试方法以抛出这些异常
  • 捕获异常并进行失败测试(Assert.fail