当前位置:首页 > 教育培训 >

ui自动化断言举例说明(ui自动化测试方法)

来源:原点资讯(www.yd166.com)时间:2023-05-15 09:35:23作者:YD166手机阅读>>

1.断言简介

断言时候UI自动化测试的三要素之一,是UI自动化测试中不可或缺的部分。我们使用定位器到定位元素后,通过测试脚本进行业务交互操作时,想要验证交互操作过程中的结果正确性就需要用到断言。

2.常规的UI自动化测试中使用的断言

在UI自动化测试中,我们通过使用断言来分析测试结果的正确性。

常用的断言一般包含以下几种。

  • 比较大小:比较数字的大小( 如2>1 )。
  • 内容包含:某个字符串包含另一个字符串(“abcd”包含“ab”)。
  • 内容不包含:某个字符串不包含另一个字符串(如“abc”不包含"de")。
  • 验证布尔值:验证一个表达式是否为真(如2>=1)。

演示代码如下(Python版本和Java版本):

Python版本

# 第一种:比较大小 price = driver.find_element( By.XPATH,'//*[contains(@resource-id="current_price")]').text assert float(price) >=170 #第二种:包含验证 name = driver.find_element( By.XPATH,'//*[contains(@resourse-id="stockName")]').text assert"BABA" in name #第三种:布尔值验证 def check(): name = driver.find_elements(By.XPATH,'//*[contains(@resource- id="stockName")]') return True if len(name)!=0 else False assert check()

从上面的示例可以看出,Python用assert来判断一个条件是否为真,如果条件为真,就继续执行;如果条件为假,则抛出AssertError异常包含错误信息。断言可以在条件不满足程序运行的情况下直接返回错误异常信息。

Java版本

//第一种:比较大小 String price = driver.findElement(By.xpath("//*[contains(@resource- id=\"current_price")]")).getText(); float currentprice = Float.parseFloat(price); float expectprice = 170; assert currentprice >=expectprice; //第二种:包含验证 Srting name = driver.findElement(By.xpath("//*[contains(@resource- id=\"stockNme")]")).getText(); assert name.contains("BABA"); //第三种:布尔值验证 @Test public boolean check(){ List<WebElement> name = driver.findElements(By.xpath("// *[contains(@resource-id=\"stockName\")]")); return name.size() > 0 ? turn : false; } @Test public void checkTest(){ assert check(); }

从上面的示例可以看出,Java用assert关键字进行断言。另外,如果需要处理更复杂的断言,可以使用Hamcrest提供的方法。Hamcrest提供了大量被称为 “匹配器”的方法。

3.Hamcrest断言

(1)Hamcrest简介

Hamcrest是一个以测试应用为目的、能灵活组合表达式的匹配器类库,也用于编写断言的框架,使用这个框架编写断言,可以提高程序的可读性及测试的效率。Hamcrest提供了大量被称为 “ 匹配器” 的方法。每个匹配器都可用于执行特定的比较操作。Hamcrest的可扩展性强,允许创建自定义的匹配器,并支持多种语言。

(2)安装Hamcrest

在Python和Java环境下安装Hamcrest演示如下。

Python版本

pip install pyhamcrest

Java版本

<dependency> <groupId>org.hamcrest</groupId> <artifactId>hamcrest</artifactId> <version>2.2</version> <scope>test</scope> </dependency>

(3)导入Hamcrest包

代码中使用Hamcrest时,需要先在代码中导入Hamcrest包。Hamcrest的Python和Java环境下的包导入如下。

Python版本

from hamcrest import *

Java版本

import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.*;

Hamcrest提供了一个全新的断言语法(assert_that),可以只使用assert_that实现一个断言语句,然后结合Hamcrest提供的匹配符,就可以完成各种场景下的断言任务。

(4)assert-that提供的API(方法)

1)比较两个字符串相等的API实例代码如下(Python版和Java版)。

Python版

assert_that("this is a string",equal_to("this is a string"))

Java版本

assertThat("this is a string",equalTo("this is a string"));

2)数值匹配,比较两个值是否接近的API示例代码如下(Python版和Java版)。

Python版

assert_that(8,close_to(10,2))

Java版本

assertThat(8.0,closeTo(10,2));

解释:断言8接近于(8~12)这个范围。

3)判断包含某个字符的API实例代码如下(Python版和Java版)。

Python版本

assert_that('abc',contains_string('d'))

Java版本

assertThat("abc",conrainsString("d"));

(5)案例

测试案例使用的是“雪球”应用,打开雪球App,先点击App页面上的“搜索输入框”,并在 “搜索输入框”中输入“alibaba”,然后再搜索关键字联想出来的词组列表里面点击“阿里巴巴”,选择股票分类,获取股票类型为“09988”的股票价格,最后验证价格在预期价格的10%上下浮动。核心演代码如下(Python版和Java版)。

Python演示代码

from hamcrest import assert_that,close_to ... def test_wait(self): #点击"搜索输入框" self.driver.find_element_by_id( "com.xueqiu.android:id/tv_search").click() #输入"alibaba" self.driver.find_element_by_id( "com.xueqiu.android:id/search_input_text" ).send_keys("alibaba") #点击"阿里巴巴" self.driver.find_element_by_xpath("//*[text='阿里巴巴']").click() #点击"股票" self.driver.find_element_by_xpath( "//*[contains(@resourse-id,'title_container')]//*[@text='股票']" ).click() #获取股票价格 locator = (MobileBy.XPATH, "//*[@text='09988']/../../..\ //*[@resource-id='com.xueqiu.android:id/current_price']") ele = WebDriverWait(self.driver,10)\ .until(expected_conditions.element_to_be_clickable(locator)) print(ele.text) current_price = float(ele.text) expect_price = 170 # 使用Hamcrest断言来判断股票价格浮动在10%范围内 assert_that current_price, close_to(expect_price,expect_price * 0.1)) ...

Java演示代码

import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.*; ... @Test public void waitlTest(){ //点击"搜索输入框" driver.findElementById("com.xueqiu.android:id/tv_search").click(); //输入"alibaba" driver.findElementById("com.xueqiu.android:id/ search_input_text").sendKeys("alibaba"); //点击"阿里巴巴" driver.findElementByXPath("//*[@text=\"阿里巴巴\"]").click(); //点击"股票" driver.findElementByXPath("//*[contains(@resource-id,\"title_container\")]// *[text=\"股票\"]").click(); //获取股票价格 By price_locator = By.xpath("//*[@text='09988']/../../..//*[@resource- id=\"com.xueqiu.android:id/current_price\"]"); WebDriverWait wait = new WebDriverWait(driver,10); WebElement ele = wait.until(ExpectedConditions.elementToBeClickable(price_locator)); System.out.println(ele.getText()); double currentPrice = Double.parseDouble(ele.getText()); double expectPrice = 170; //使用Hamcrest 断言来判断股票价格浮动在10%范围内 assertThat(currentPrice,closeTo(expectPrice,expectPrice*0.1)); } ...

上面的实例中,assert_that/assertThat是用于生成测试断言的样式化语句,用于比较两个值(current_price与expect_price)是否接近,断定实际值current_price在expect_price-expect_price* 0.1与expect_price expect_price* 0.1区间浮动。

搜索*TestingStudio霍格沃兹的干货都很硬核

栏目热文

ui自动化用例失败怎么解决(ui自动化测试时元素不可见)

ui自动化用例失败怎么解决(ui自动化测试时元素不可见)

运行自动化测试的时候,有时会因为网络不稳定,测试环境或者第三方环境正在重启而造成用例运行结果不稳定,时而能跑过时而跑不过...

2023-05-15 09:15:48查看全文 >>

ui自动化测试步骤(ui自动化测试怎么搭建环境)

ui自动化测试步骤(ui自动化测试怎么搭建环境)

自动化好像是测试行业永恒不变的热点话题,同时也是测试行业争议最大的话题。不知道现在还有多少言论说自动化没有用的,也有不少...

2023-05-15 09:38:36查看全文 >>

ui自动化测试十大问题(如何提高ui自动化测试开发效率)

ui自动化测试十大问题(如何提高ui自动化测试开发效率)

UI自动化测试一直都是如此的令人纠结,自动化测试初学者总是拿它入门,但有些经验丰富者对其又是毁誉参半,抑或抛出分层自动化...

2023-05-15 09:25:55查看全文 >>

办理南京车牌个人需要什么条件(南京车牌照申请条件)

办理南京车牌个人需要什么条件(南京车牌照申请条件)

外地人想在南京给新车上牌,不用再提交暂住证或者社保证明,仅凭自己的身份证就能一证办理。有关渠道透露,即日起,根据《机动车...

2023-05-15 09:19:57查看全文 >>

南京车牌互换流程(南京车牌互换的车管所)

南京车牌互换流程(南京车牌互换的车管所)

机动车所有人名下有两辆车想把喜欢的车牌挂到经常开的车上该如何办理机动车号牌号码互换呢?今天蜀黍就为大家一一解答~那么要办...

2023-05-15 09:52:28查看全文 >>

如何提高ui自动化测试开发效率(一个软件的ui怎么自动化测试)

如何提高ui自动化测试开发效率(一个软件的ui怎么自动化测试)

前言在进行Web应用程序开发的时候,我们经常需要进行自动化测试以保证应用的质量和稳定性。而WebUI自动化测试就是其中的...

2023-05-15 09:20:59查看全文 >>

ui自动化测试脚本讲解(ui自动化测试学习)

ui自动化测试脚本讲解(ui自动化测试学习)

robotframework-ride是一款开源的通用的自动化软件。功能强大、应用灵活,适用于功能测试、协议测试、跨系统...

2023-05-15 09:26:10查看全文 >>

如何改善ui自动化测试(如何提高ui自动化测试开发效率)

如何改善ui自动化测试(如何提高ui自动化测试开发效率)

自动化测试其中应用程序在极短的时间内执行软件的整个生命周期,从而为测试软件提供了足够的有效性。在编程中,测试人员编写脚本...

2023-05-15 09:33:50查看全文 >>

ui自动化测试缺点(ui自动化测试方法)

ui自动化测试缺点(ui自动化测试方法)

  UI自动化技术,是我们测试工程师绕不开的一个话题,只要提起它来,基本所有测试工程师都能给你说道说道。  有些人认为它...

2023-05-15 09:37:21查看全文 >>

ui自动化测试方案设计(适合做ui自动化测试的场景)

ui自动化测试方案设计(适合做ui自动化测试的场景)

1、为什么我们需要UI自动化测试?UI自动化测试的focus应该在哪几个方面?  测试自动化并不是为了赢得老板的赞赏,或...

2023-05-15 09:16:31查看全文 >>

文档排行