我正在使用带有 Eclipse 和 TestNG 框架的 Java 使用 Selenium RC。我有以下代码片段:
assertTrue(selenium.isTextPresent("Please enter Email ID"));
assertTrue(selenium.isTextPresent("Please enter Password"));
第一个断言失败并停止执行。但我想继续进一步的代码片段。
我正在使用带有 Eclipse 和 TestNG 框架的 Java 使用 Selenium RC。我有以下代码片段:
assertTrue(selenium.isTextPresent("Please enter Email ID"));
assertTrue(selenium.isTextPresent("Please enter Password"));
第一个断言失败并停止执行。但我想继续进一步的代码片段。
我建议你使用 TestNg 原生提供的软断言
package automation.tests;
import org.testng.asserts.Assertion;
import org.testng.asserts.SoftAssert;
public class MyTest {
private Assertion hardAssert = new Assertion();
private SoftAssert softAssert = new SoftAssert();
}
@Test
public void testForSoftAssertionFailure() {
softAssert.assertTrue(false);
softAssert.assertEquals(1, 2);
softAssert.assertAll();
}
资料来源:http ://rameshbaskar.wordpress.com/2013/09/11/soft-assertions-using-testng/
Selenium IDE 使用 verify 来执行软断言,这意味着即使检查失败,测试也将继续,并在测试结束时或在发生硬断言时报告失败。
使用 TestNG,可以通过使用自定义测试侦听器来获得这些软断言。我已经在我的博客上记录了如何做到这一点:http: //davehunt.co.uk/2009/10/08/using-soft-assertions-in-testng.html
基本上,您需要创建自己的verify*
方法,在这些方法中您可以捕获断言失败并将它们添加到映射中。然后在自定义afterInvocation
侦听器中,如果地图不为空,您可以将测试设置为失败。
我再次添加了继续断言失败的最简单方法之一。这是在这里问的。
try{
Assert.assertEquals(true, false);
}catch(AssertionError e)
{
System.out.println("Assertion error. ");
}
System.out.println("Test Completed.");
将您的断言更改为验证:
verifyTrue(selenium.isTextPresent("Please enter Email ID"));
verifyTrue(selenium.isTextPresent("Please enter Password"));
一旦断言失败,执行应该停止,这就是使用它们的目的。
你可以声明一个测试这两个东西的断言,但是你同时测试两个东西。最好先解决第一个失败的原因,然后再进行第二个断言。