我正在研究以前建立过的测试自动化框架。该框架从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");
}
}
答案 0 :(得分:2)
试试这个:
if (enterValueInBox.length() >= 1)
{
try
{
browserActions.typeValueInTextBox(myDriver, enterValueInBox);
}
catch (Exception e)
{
Assert.fail("EnterValueInBox failed", e);
}
}
抛出异常时,您的测试将失败。
答案 1 :(得分:2)
您的测试正在通过,因为测试功能已完成
在你的情况下,你应该做一个
Assert.fail
)