实例演示自动化测试testng的assert判定,方法技巧全get

实例演示自动化测试testng的assert判定,方法技巧全get


在运行下面代码之前,你觉得运行结果是打印了哪些内容呢?

Assert.assertTrue(1==2);
System.out.println("A");
System.out.println("B");

是的,你的理解没错,程序什么都不会打印!那如何解决判定失败后,还能继续执行呢?如果你想到使用try-catch的异常机制,恭喜你,前进了一大步!那像下面这份代码,又会打印什么内容呢?

public  void test() {
		try {
			Assert.assertTrue(1==2);
			System.out.println("A");
		}
		catch (Exception e) {
			e.printStackTrace();
		}
		finally {
			System.out.println("B");
			try {
					Assert.assertTrue(1==2);
					System.out.println("C");
				}
			catch (Exception e) {
					e.printStackTrace();
			}
			finally {
				System.out.println("D");
			}
			System.out.println("E");
		}	
		System.out.println("F");
		Assert.assertTrue(1==2);
		System.out.println("G");
	} 

运行结果可能超出了你的预料,是的,程序仅打印了B和D,也就是说,A、C、E、F、G的代码都未执行!

因此,在编写自动化测试脚本时,要考虑这样的异常情况处理。当你在Assert判定后,还有其他操作时,就要考虑使用这种try-catch-finally结构了。当你读懂了这个例子,具体的使用方法和场景自然迎刃而解。

讲到这里,你可能以为判定就万事大吉了,可现实很无情,看下面这个例子

try {	
Assert.assertTrue(driver.findElement(By.id("name")).getText().contains("测试")); 
}
catch (Exception e) { e.printStackTrace();}	
finally {System.out.println("A");}	 

这种判定很常见,但如果你直接这样写了,用例的测试结果在某些情况下可能让人呵呵了。这样的代码会出现什么问题呢?

当findElement找不到元素时,你可能会觉得,那肯定是判定失败,继续打印A呀。但实际结果却是:判定成功,继续打印A。

竟然是判定成功!!!这不天大的笑话嘛!必须解决。结合我们之前发现的规律,我们尝试在判定前,增加一个元素是否存在的判定,如果元素不存在,就不会走后面的判定。

try {
    Assert.assertTrue(ifWebElementExist(driver,By.id("name"));  				    
    Assert.assertTrue(driver.findElement(By.id("name")).getText().contains("测试"));}
catch (Exception e) { e.printStackTrace();}	
finally {System.out.println("A");}	 
//判断元素是否存在,存在则返回true,不存在则返回false
	public static boolean ifWebElementExist(WebDriver driver,By locator) {
		try {
			driver.findElement(locator);
			return true;
		}
		catch (NoSuchElementException e){
			return false;
		}
	}

再次运行,结果perfect,问题完美解决!

文章原创,以自己做自动化测试过程中遇到的问题及解决思路和步骤,供大家思考,以期抛砖引玉,共同进步和提高。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

初心与使命

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值