APP自动化测试-6.断言处理assert与hamcrest

2023-10-29

APP自动化测试-6.断言处理assert与hamcrest



前言

主要记录一下常规断言assert的常用场景和hamcrest断言的简单使用


提示:以下是本篇文章正文内容,下面案例可供参考

一、assert断言

自动化测试中断言通常分为两种

  • 元素是否存在
  • 元素的属性是否符合预期

元素存在判断,可以通过坐标或通过目标元素是否存在某个属性来判断,示例如下:

# 通过坐标判断元素是否存在
element = self.driver.find_element(AppiumBy.ANDROID_UIAUTOMATOR, 'new UiSelector().text("点击登录")')
assert int(element.size['width']) > 1
assert int(element.size['height']) > 1

# 通过元素属性判断元素是否存在
ele_text = self.driver.find_element(AppiumBy.ANDROID_UIAUTOMATOR, 'new UiSelector().text("点击登录")').text
assert '登录' in ele_text

注:

  • assert后放的为表达式,若要定义异常信息,可以如下
assert 1 > 2, 'this is error message'

二、hamcrest断言

hamcrest是一个以测试为目的,能组合成灵活表达式的匹配器类库,用于编写断言的框架,使用这个框架编写断言,提高开发和测试的效率。

hamcrest提供了大量的匹配器方法,每个匹配器都用来执行特定的断言比较操作,同时hamcrest可扩展性比较强,能都自定义匹配器。

hamcrest语法:

def assert_that(actual, matcher=None, reason=""):
# actual 为实际值
# matcher为期望值

hamcrest匹配器:

  '''
    对象
        equal_to - 匹配相等的对象
        has_length - 匹配长度 len(item)
        has_property - 匹配属性值
        has_properties - 匹配包含所有属性值的对象
        has_string - 匹配字符串 str(item)
        instance_of - 匹配对象的类型
        none, not_none - 匹配None或not None
        same_instance - 匹配相同的对象
        calling, raises - calling和raise结合使用
    数字
        close_to - 匹配接近的数字
        greater_than, greater_than_or_equal_to, less_than, less_than_or_equal_to - 匹配数字大小
    文本
        contains_string - 匹配包含字符串
        ends_with - 匹配以字符串结尾
        equal_to_ignoring_case - 匹配完整字符串且忽略大小写
        equal_to_ignoring_whitespace - 匹配完整的字符串且忽略空白字符
        starts_with - 匹配以字符串开始
        string_contains_in_order- 在相对位置,匹配部分字符如string_contains_in_order("bc", "fg", "jkl")将会匹配abcdefghijklm
    逻辑
        all_of - 匹配所有指定的匹配项 and
        any_of - 匹配其中任意一个匹配项 or
        anything - 匹配任何条件,等效于true
        is_not - 匹配相反的条件,如assert_that(cheese, is_not(equal_to(smelly)))
        not_ - 等效于is_not 如 assert_that(alist, not_(has_item(item)))
    序列
        contains_exactly - 匹配完整的序列,排序也要一致
        contains_inanyorder - 匹配完整的序列,不要求排序一致
        has_item - 匹配序列中指定的元素
        has_items - 匹配序列中指定的多个元素,不要求排序
        is_in - 匹配元素是否在指定序列中
        only_contains - 匹配序列是否在指定list中出现
        empty - 匹配空序列
    字典 
        has_entries - 匹配字典多个键值对
        has_entry - 匹配字典键值对
        has_key - 匹配字典的key
        has_value - 匹配字典的value
    
    '''

常用匹配器示例:

# equal_to 比较对象相等
	assert_that(10, equal_to(10))

# close_to 匹配接近的数字,close_to中的2个参数第一个是期望的值,比如为8,第二个参数为浮动空间,比如为1,那么实际值在区间:8+1与8-1之内即为true
	assert_that(9, close_to(81))

# contains_string,判断实际值中是否包含某个字符串,contains_string参数为包含或匹配的字符串,实际结果的字符串包含contains_string中定义的字符串即返回True
	assert_that("this is test message", contains_string("message"))
	

通常actual值需要根据从元素属性中获取


总结

简单记录assert的断言,后面根据项目慢慢完善断言的使用。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

APP自动化测试-6.断言处理assert与hamcrest 的相关文章

随机推荐