2012-12-07 147 views
4

我对WebDriver和TestNG框架相当陌生。我已经开始了一个对电子商务网站进行回归测试的项目。我完成了登录和注册等操作。但有些东西我不太明白。WebDriver + TestNG - 如何处理测试结果

例如,我有这个简单的代码来搜索产品。

driver.get(url + "/k/k.aspx"); 
driver.findElement(By.id("q")).clear(); 
driver.findElement(By.id("q")).sendKeys("xxxx"); //TODO: Make this dynamic 
driver.findElement(By.cssSelector("input.submit")).click(); 

现在我想检查是否在页面上显示xxxx。这可以用

webdriver.findElement(By.cssSelector("BODY")).getText().matches("^[\\s\\S]*xxxxxx[\\s\\S]*$") 

我把它存储在一个布尔值并检查它的真或假。

现在回答这个问题,基于这个布尔值,我想说测试结果是成功还是失败。我怎样才能做到这一点?什么触发testNG测试失败?

回答

5

TestNG的或任何其他测试工具决定基于断言测试的成功或失败。

Assert.assertEquals(actualVal, expectedVal); 

所以,如果actualValexpectedVal是相同的,然后测试将通过否则就会失败。

同样,如果您使用任何IDE(如Eclipse),则会发现其他断言选项。

+0

另请参见Assert.assertTrue for booleans – WilQu

+0

谢谢!这解决了我的问题:) – Oleaha

0

写这段代码放到你的,如果条件不满足

throw new RuntimeException("XXXX not found: "); 
+2

我相信AssertionException将是一个更合适的异常,但我相信条件不应该在if条件中,并且最好由Asserts处理。 –

3

如果您想基于验证该文本值来停止您的测试执行,那么您可以使用Asserts。但是,如果您想将测试结果记录为失败并继续进行,则应尝试使用软断言,将验证记录为已通过或失败并继续进行测试。最新的Testng来装备处理这个 - 信息在Cedric's blog

+0

感谢您的链接!很好的阅读:) – Oleaha

0

你可以使用抛出异常,并且每个方法将调用这个方法也应该在方法名后面抛出Excetion,或者你可以使用try catch。示例:

protected Boolean AssertIsCorrectURL(String exedctedURL) throws Exception { 

String errMsg = String.format("Actual URL page: '%s'. Expected URL page: '%s'", 
this.driver.getCurrentUrl(), exedctedURL); 
throw new Exception(errMsg); 
} 
相关问题