断言是什么? ? ? ?
一个测试的成功意味着再不抛任何异常的情况下执行完成。
断言帮助我们验证测试条件,并根据测试条件确认用例是否执行成功还是执行失败。
下面以验证以验证谷歌标题等于Google为例。如果页面标题和我们提供的目标文本标题不一直, 则跑出异常,用例失败。
如下面的代码示例所示:
@Test
publicvoid testCaseVerifyHomePage() {
driver=new FirefoxDriver();
driver.navigate().to("http://google.com");
Assert.assertEquals("Google", driver.getTitle());
}
我在做在上面的测试用例,首先我创建一个Firefox driver, 然后打开谷歌首页,第三行则为断言。
也可以写成如下断言。Assert.assertEquals("Goooogle",driver.getTitle(), "Title not matching");
TestNG 断言在整个断言里面扮演者重要角色,且其清晰的代码格式深得喜爱。
将页面标题改变为下面代码执行并查看执行结果。
@Test
publicvoid testCaseVerifyHomePage() {
driver=new FirefoxDriver();
driver.navigate().to("http://google.com");
Assert.assertEquals("Gooooogle", driver.getTitle());
}
上面的代码将抛出一个断言错误: java.lang.AssertionError: expected [Google] but found [Gooooogle]
如上面代码所示:TestNG提供了很多好用的断言。以下是经常使用的。
Assert.assertEqual(String actual,String expected) :检查两个字符串是否相等,如果不相等,测试失败。
Assert.assertEqual(String actual,String expected, Stringmessage) :它有三个字符串参数,检查两个字符串是否相等, 如果不相等,测试失败, 且在抛出异常中打印出我们提供的第三个message参数信息
Assert.assertEquals(booleanactual,boolean expected) : 检查两个boolean值是否相等,如果不相等,测试失败。
Assert.assertEqual (java.util.Collection actual, java.util.Collection expected,java.lang.String message): 检查两个Collection Objece对象是否相等, 如果不相等,测试失败,且在抛出异常中打印出我们提供的第三个message参数信息
Assert.assertTrue(condition):判断传入的条件是一个boolean值,如果值为true,则用例通过,否则抛出一个AssertionError异常。
Assert.assertTrue(condition, message) : 判断传入的条件是一个boolean值,如果值为true,则用例通过,否则抛出一个AssertionError异常,且在异常消息中打印出传入的message提示信息。
Assert.assertFalse(condition) : 判断传入的条件是一个boolean值,如果值为false,则用例通过,否则抛出一个AssertionError异常。
Assert.assertFalse(condition, message): 判断传入的条件是一个boolean值,如果值为false,则用例通过,否则抛出一个AssertionError异常,且在异常消息中打印出传入的message提示信息。
下面是使用断言的示例代码:
@Test
publicvoid testCaseVerifyHomePage() {
driver=new FirefoxDriver();
driver.navigate().to("http://google.com");
Assert.assertEquals("Gooogle", driver.getTitle(), "Strings are not matching");
//Writea code to login and write a method called isUserLoggedInSuccessfully andisUserLoggedOut which returns boolean.
Assert.assertTrue(isUserLoggedInSuccessfully(),"User failed tologin");
Assert.assertFalse(isUserLoggedOut())
}
}
TestNG 断言:
Assert.assertEquals(actual, expected):
actual一般是被测试的代码返回的实际值。
expected是期望值,通常都是用户指定的内容。
传两个参数值,如果实际的值等于期望的值,则脚本断言成功,反之则失败。可以指定输出错误信息。
Assert.assertNotEquals(actual1, actual2, delta):
判断是否不相等。
Assert.assertEquals(actual, expected, delta, message):
float和double后面多了一个delta的值,是误差参数,参加比较的两个浮点数在这个误差之内则会被认为是相等的。
Assert.assertEqualsNoOrder(Object[] actual, Object[] expected):
判断顺序是否相等,可以有消息,也可以没有消息。
Assert.fail(message,realCause) :
直接失败测试用例,可以抛出异常,可以有消息,也可以没有消息。
Assert.assertTrue(condition,message):
判断是否为true。
Assert.assertFalse(condition,message):
判断是否为false。
Assert.assertSame(actual, expected,):
判断两个对象是否指向同一个对象,引用地址是否相等。
Assert.assertNotSame(actual, expected,):
判断两个对象是否指向同一个对象,引用地址是否不相等。
Assert.assertNull(argo,arg1):
判断是否为null。
Assert.assertNotNull(argo,arg1):
判断是否不为null