栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

APP自动化Android之属性获取与断言

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

APP自动化Android之属性获取与断言

本文节选自霍格沃兹测试学院内部教材
断言是 UI 自动化测试的三要素之一,是 UI
自动化不可或缺的部分。我们使用定位器定位到元素后,通过脚本进行业务操作的交互,想要验证交互过程中的正确性就需要用到断言。

常规的UI自动化断言

分析正确的输出结果,常规的断言一般包含以下的几个情形:

  • 比较大小
  • 包含或者不包含
  • 验证布尔值

示例代码:


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

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

Hamcrest断言

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

Hamcrest使用方法

安装

         pip install pyhamcrest

导入

         from hamcrest import *

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

常用方法 API
**
**
1.比较两个字符串可以使用“equal_to”方法,示例代码如下:

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

2.数值匹配,比较两个值是否接近,可以使用“close_to”方法,用法:

        assert_that(8,close_to(10,2))

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

3.包含某个字符,使用“contains_string”方法,示例代码如下:

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

案例

使用“雪球”应用,打开雪球
APP,点击页面上的搜索输入框输入“alibaba”,然后在搜索联想出来的列表里面点击“阿里巴巴”,选择股票分类,获取股票类型为“09988”的股票价格,最后验证价格在预期价格的
10% 范围浮动。示例代码片段如下:


        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(@resource-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))

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

作为UI自动化测试三要素之一的断言,大家学会了么?下一篇我们来分享参数化用例,有兴趣的小伙伴可以关注一下哦!

** _n来霍格沃兹测试开发学社,学习更多软件测试与测试开发的进阶技术,知识点涵盖web自动化测试 app自动化测试、接口自动化测试、测试框架、性能测试、安全测试、持续集成/持续交付/DevOps,测试左移、测试右移、精准测试、测试平台开发、测试管理等内容,课程技术涵盖bash、pytest、junit、selenium、appium、postman、requests、httprunner、jmeter、jenkins、docker、k8s、elk、sonarqube、jacoco、jvm-sandbox等相关技术,全面提升测试开发工程师的技术实力nQQ交流群:484590337n公众号 TestingStudion视频资料领取:https://qrcode.testing-studio.com/f?from=CSDN&url=https://ceshiren.com/t/topic/15844 n点击查看更多信息

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/679406.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号