TestNG断言

TestNG断言

  1. Assert类(硬断言)
    1)TestNG中提供了多个33个assertEquals()方法,主要是匹配不同的数据类型和集合类操作。我们最常用的就是assertEquals(actual, expected)或者assertEquals(actual,expected,“message1”)

在com.course.testng包里新建AssertionTest类,代码如下

package com.course.testng;

import org.testng.Assert;
import org.testng.annotations.Test;

public class AssertionTest {
	
	@Test
	public void assertEquals1() {
		System.out.println("1");
		Assert.assertEquals("1","2");  //Assert.assertEquals(actual, expected),actual实际值和expected期望值比较
	}
	
	@Test
	public void assertEquals2() {
		System.out.println("11");
		Assert.assertEquals("11","12","断言");  //Assert.assertEquals(actual,expected,“message1”)actual实际值和expected期望值比较,比较失败返回message1
	}
}

测试结果断言失败,可以看出assertEquals(actual,expected,“message1”)中,如果现实结果和期待结果不相等,抛出断言异常并显示message1的内容。自动化测试一般喜欢带上这个message1,这样抛出错误,更能快速读懂错误的原因和错误的具体业务逻辑。


在这里插入图片描述

2)assertEqualsNoOrder((actual, expect)
判断两个对象是否相同,忽略排序位置。例如下面的两个字符串数组比较。

package com.course.testng;

import org.testng.Assert;
import org.testng.annotations.Test;

public class AssertionTest {
	
	@Test
	public void assertEquals3(){
		String[] st1 = {"Amy","Tom","Jhon"};
		String[] st2 = {"Jhon","Amy","Tom"};
		Assert.assertEqualsNoOrder(st1, st2,"两个字符串数组不相同");
	}
}

测试结果
在这里插入图片描述

3) assertFalse(布尔条件,“message1”)
这里来一个断言为假的方法,断言一个条件,如果返回是假,则测试通过,如果返回是真,抛出断言异常,打印message1的内容。

package com.course.testng;

import org.testng.Assert;
import org.testng.annotations.Test;

public class AssertionTest {
	
	@Test
	public void assertEquals4() {
		String[] st3 = {"Amy","Tom","Jhon"};
		String[] st4 = {"Jhon","Amy","Tom"};
		Assert.assertFalse(st3==st4,"两个相等");
	}
}

测试结果
在这里插入图片描述

4) assertNotEquals(actual, expect, “message1”)
提供“不相等”断言方法,也是有6个针对不同数据类型的不相等的断言方法。这里我们介绍两个对象的不相等举例,如果相等,输出message1的内容。

package com.course.testng;

import org.testng.Assert;
import org.testng.annotations.Test;

public class AssertionTest {
	

	@Test
	public void assertEquals5() {
		String[] st5 = {"Amy","Tom","Jhon"};
		String[] st6 = {"Amy","Tom","Jhon"};
		Assert.assertNotEquals(st5,st6,"两者相等");
	}
}

测试结果
在这里插入图片描述

5) assertNotNull(object, “message1”)
对象非空判断,断言对象不为空,否则,抛出异常,打印message1的内容。

package com.course.testng;

import org.testng.Assert;
import org.testng.annotations.Test;

public class AssertionTest {
	

	
	@Test
	public void assertEquals6() {
		String[] st7 = {"Amy","Tom","Jhon"};
		String[] st8 = {};
		String[] st9 = null;
		Assert.assertNotNull(st7,"st7对象为空");
		Assert.assertNotNull(st8,"st8对象为空");
		Assert.assertNotNull(st9,"st9对象为空");		
	}
}

测试结果
在这里插入图片描述

6) assertSame(actual, expect, “message”)
断言两个对象相同,这里相同和上面的Equals不同,Equals是值比较,而Same是内存地址比较。直接来看下面例子。

package com.course.testng;

import org.testng.Assert;
import org.testng.annotations.Test;

public class AssertionTest {
	
	
	@Test
	public void assertEquals7() {
		String[] str10 = {"Amy","Tom","Jhon"};
		String[] str11 = {"Jhon","Amy","Tom"};
		String[] str12 = str10;
		Assert.assertSame(str10, str12, "not same");
		Assert.assertSame(str10, str11, "not same");
	}
}

测试结果
在这里插入图片描述

7) assertNotSame(actual, expect, “message”)

同样的,也有断言两个对象内存地址不相同的断言方法。

package com.course.testng;

import org.testng.Assert;
import org.testng.annotations.Test;

public class AssertionTest {
	

	@Test
	public void assertEquals8() {
		String[] str13 = {"Amy","Tom","Jhon"};
		String[] str14 = {"Jhon","Amy","Tom"};
		String[] str15 = str13;	
		Assert.assertNotSame(str13, str15, "same");
	}
}

测试结果
在这里插入图片描述

8) assertTrue(条件表达式, “message1”)
提供了断言一个条件为真的方法,如果条件表达式为真,该断言运行通过,如果表达式为假,抛出异常,打印message1的消息。

package com.course.testng;

import org.testng.Assert;
import org.testng.annotations.Test;

public class AssertionTest {

@Test
public void assertEquals9() {
	String[] str16 = {"Amy","Tom","Jhon"};
	String[] str17 = {"Amy","Jhon","Tom"};
	String[] str18 = str16;
	Assert.assertTrue(str16==str17,"两者不相同");
}

}

测试结果
在这里插入图片描述

  1. SoftAssert(软断言)
    在Assert.java这个类中,上面我们已经介绍了大部分的断言方法。这些断言方法都是叫硬断言。硬断言就是,如果运行到折行断言失败,即使该用例,后面还有其他代码行,也不会继续执行下去。有时候我们不希望这种情况出现,SoftAssert就很好地帮我们解决了这个问题。
    SoftAssert的特点

1) 如果一个断言失败,会继续执行这个断言下的其他语句或者断言。

2) 也就是一个用例有多个断言,失败了其中一个,不影响其他断言的运行

3) 不要忘记调用assertAll()在该用例的最后一个断言后面。

package com.course.testng;

import org.testng.Assert;
import org.testng.annotations.Test;
import org.testng.asserts.SoftAssert;

public class AssertionTest {
	
	@Test
	public void assertEquals10() {
		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();
	}
}

测试结果
在这里插入图片描述

通过运行结果截图,我们可以看到在断言12和13相等的这行代码后面还有其他的语句,如果这里采用的是Hard Assert,那么Test complete 和 11是不会输出,也就是代码没有被执行。这个就是SoftAssert的优点,再强调一次,最后一定要调用assertAll()方法。


  • 2
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Java Selenium TestNG中,可以封装断言方法来验证测试结果。根据提供的引用内容,可以看到有三个封装的断言方法。 第一个引用\[1\]中的方法是assertElementTextContains,它用于验证指定元素的文本是否包含预期的内容。该方法首先获取元素的文本,然后使用assertContains方法进行断言。 第二个引用\[2\]中的方法是assertNotEquals,它用于验证两个对象是否不相等。该方法首先使用assertFalse方法判断实际值和预期值是否相等,如果相等则抛出AssertionError异常。 第三个引用\[2\]中的方法是assertElementVisible和assertElementNotVisible,它们分别用于验证元素是否可见和不可见。这两个方法使用waitElementIsVisible方法等待元素的可见性,并使用assertTrue和assertFalse方法进行断言。 因此,可以根据需要选择合适的断言方法来验证测试结果。 #### 引用[.reference_title] - *1* *2* [Java版UI自动化测试的断言方法/selenium Testng方法封装断言](https://blog.csdn.net/Franciz777/article/details/114063739)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [JAVA+selenium+testng 断言封装及调用](https://blog.csdn.net/weixin_44242153/article/details/117709979)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值