第一步:发起请求 第二步:断言响应状态是否200,如果成功继续 第三步:断言响应时间是否符合标准(非必须) 第四步:断言响应数据是否正确,一般的做法是判断某个值是否相等或者包含关系。
断言是一个接口用例执行成功的关键,TestNG中最常用的一个断言类是Assert.java,里面包含很多个静态方法。
如果condition为真,该断言运行通过,如果condition为假,抛出异常并打印message的信息
package com.sangyu.test;
import org.testng.Assert;
import org.testng.annotations.Test;
/**
* == 比较的是内容地址
* str1 和 str2 内存地址不同
* str3 指向了 str1 所以它俩的内存地址是相同的
*/
public class Main {
@Test
public void test01() {
String[] str1 = {"Hamilton", "Auston", "Marcia"};
String[] str2 = {"Marcia", "Hamilton", "Auston"};
String[] str3 = str1;
Assert.assertTrue(str1 == str2, " str1 == str2 两者不相同");
}
@Test
public void test02() {
String[] str1 = {"Hamilton", "Auston", "Marcia"};
String[] str2 = {"Marcia", "Hamilton", "Auston"};
String[] str3 = str1;
Assert.assertTrue(str1 == str3, " str1 == str3 两者不相同");
}
}
与assertTrue()相对应的是assertFalse(condition, message)方法,如果condition结果为false,则断言成功,condition为true,断言失败并打印message信息
TestNG的assertEquals()方法提供了超过30多种的重载方法,这些方法支持不同的数据类型和集合类操作
/**
* Assert.assertEquals(str1, str2);
* 在比较数组的时候,比较的是数组的长度以及数组下标对应的值是否相等的
* 在比较字符串时候,区分大小写
*/
@Test
public void test03() {
String[] str1 = {"Hamilton", "Auston", "Marcia"};
String[] str2 = {"Hamilton", "Auston", "Marcia"};
Assert.assertEquals(12, 12);
Assert.assertEquals("AA", "AA");
Assert.assertEquals(str1, str2);
Assert.assertEquals("ABc", "ABC", "not equals");
}
Assert.assertEquals(actual, expected, message)。actual与expected比较结果如果不相等,抛出断言异常并显示message的信息。
@Test
public void test04() {
Assert.assertEquals("ABc", "ABC", "\"ABc\" \"ABC\"not equals");
}
判断两个数组是否相同,忽略排序位置
@Test
public void test05() {
String[] str1 = {"Hamilton", "Auston", "Marcia"};
String[] str2 = {"Marcia", "Hamilton", "Auston"};
Assert.assertEqualsNoOrder(str1, str2, "两个字符串数组不相同");
}
与 Assert.assertEquals 相反的是Assert.assertNotEquals(actual, expected, message),actual 与 expected 不相等的话则断言成功,相等的话断言失败并抛出断言异常并显示message的信息
对象非空判断,断言对象不为空,否则,抛出异常,打印message1的内容。
断言两个对象相同,这里相同和上面的Equals不同,Equals是值比较,而Same是内存地址比较
与assertSame(actual, expect, “message”)相反的是assertNotSame(actual, expect, “message”),断言两个对象内存地址不相同
在 Assert.java 也称为硬断言。硬断言就是,如果运行到这行断言失败,即使该用例,后面还有其他代码行,也不会继续执行下去。SoftAssert 可以解决这个问题。
SoftAssert 的特点: 1)一个用例有多个断言,失败了其中一个,不影响其他断言的运行 2)在该用例的最后一个断言调用assertAll()
import org.testng.annotations.Test;
import org.testng.asserts.SoftAssert;
public class AssertTestDemo {
@Test
public void testSoftAssert(){
System.out.println("Test start");
SoftAssert assertion = new SoftAssert();
assertion.assertEquals(12, 13,"两者不相等");
System.out.println("Test complete");
System.out.println(3+8);
assertion.assertAll();
}
}