自动化测试之断言:TestNG断言类简述
TestNG之HardAssert和SoftAssert
我们做自动化的时候经常把代码的重点放在逻辑层,或者数据层。其实我写代码主要精力也放在这边,毕竟mock实际操作才是自动化测试的精髓。以至于最后的在写结果断言的时候就一笔带过。
assert (EntityRE.contains("成功")); 但是真正看一个测试脚本的水平高低,其实是看断言能力的高低,因为断言才能体现出真正的测试思维和测试经验。可是在实际工作中,相信有些同事可能和我一样对各式各样的断言类也是傻傻分不清楚,那么今天就总结一些常用的断言类,以及断言方法,供大家参考。
在详细介绍断言类之前,先罗列下经常断言的场景:
接口:①请求状态,②请求响应时间,③返回json中某个关键字段是否存在或者包含;
UI:①页面跳转时间,②控件是否正确展示;
一,硬断言HardAssert:
TestNG最常用的一个断言类是Assert.java,他提供了很多的静态方法。我们也称为硬断言。
该类一共提供了33个AssertEquals()方法,主要匹配不同的数据类型和集合类。
1,最常使用的是assertEquals(actual,expected)或者assertEquals(actual,expected,"message")这两个种实现方式。如果断言成功,该条测试用例PASS,如果断言失败,则会抛出异常AssertionError,并在控制台附上你自定义的message。
2,assertEqualsNoOrder(actual,expected)
判断集合中两个对象是否相等,忽略排序。
3,assertFalse(boolean condition,"message")
断言一个条件,如果返回结果为false,则测试通过;反之抛出异常,并且附上自定义的信息。
4,assertTrue(boolean condition,"message")
断言一个条件,如果返回结果为True,则测试通过,反之抛出异常,并附上信息。
二,软断言SoftAssert
虽然硬断言基本上已经覆盖了所有Testng可能用到的断言场景,但是它有一个缺陷就是一旦失败,用例不会继续向下执行。那么软断言正好可以弥补这个缺陷;
软断言的语法实现上只是多一个类的实例化 SoftAssert assertion=new SoftAssert(); ,其他使用上和硬断言一致,这里不再多说。下面简单介绍下软断言的特点及Tips
1.如果一个类有多个断言,一个断言失败了不影响其他代码和断言的执行;
2.在用例的最后一个断言后面加上assertAll()方法;
以上是Testng中中提供的断言方法,但是JAVA自带也有断言类,后续会介绍,包括实现断言类的二次封装,增加返回值方便调用。