关于软件测试:干货-APP自动化Android之属性获取与断言

4次阅读

共计 2394 个字符,预计需要花费 6 分钟才能阅读完成。

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

惯例的 UI 自动化断言

剖析正确的输入后果,惯例的断言个别蕴含以下的几个情景:

  • 比拟大小
  • 蕴含或者不蕴含
  • 验证布尔值

示例代码:

# 比拟大小
price = driver.find_element(By.XPATH,'//*[contains(@resource-id="current_price")]').text
assert float(price) >=170

#蕴含验证
name = driver.find_element(By.XPATH,'//*[contains(@resource-id="stockName")]').text
assert "BABA" in name

#布尔值验证
def check():
  name = driver.find_elements(By.XPATH,'//*[contains(@resource-id="stockName")]')
    if len(name)!=0:
        return True
    else:
        return False
assert 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_price0.1 与 expect_price+expect_price0.1 范畴区间浮动。
作为 UI 自动化测试三要素之一的断言,大家学会了么?下一篇咱们来分享参数化用例,有趣味的小伙伴能够关注一下哦!

内容全面降级,4 个月 20+ 我的项目实战强化训练,资深测试架构师、开源我的项目作者亲授 BAT 大厂前沿最佳实际,带你一站式把握测试开发必备外围技能(对标阿里 P6+,年薪 50W+)!直推 BAT 名企测试经理,广泛涨薪 50%+!

正文完
 0