python-web自动化测试-断言

        断言,也叫检查点,指的是在自动化测试过程中,让脚本自动判断实际结果是否等于预期结果。有基本布尔型断言、比较断言、复杂断言等方法。

一、基本布尔型断言

序号

断言方法

断言描述
1assertEqual(arg1, arg2, msg=None)验证arg1=arg2,不等则fail 【常用】
2assertNotEqual(arg1, arg2, msg=None)验证arg1 != arg2, 相等则fail
3assertTrue(expr, msg=None)验证expr是true,如果为false,则fail 【常用】
4assertFalse(expr,msg=None)验证expr是false,如果为true,则fail 【常用】
5assertIs(arg1, arg2, msg=None)验证arg1、arg2是同一个对象,不是则fail
6assertIsNot(arg1, arg2, msg=None)验证arg1、arg2不是同一个对象,是则fail
7assertIsNone(expr, msg=None)验证expr是None,不是则fail
8assertIsNotNone(expr, msg=None)验证expr不是None,是则fail
9assertIn(arg1, arg2, msg=None)验证arg1是arg2的子串,不是则fail
10assertNotIn(arg1, arg2, msg=None)验证arg1不是arg2的子串,是则fail
11assertIsInstance(obj, cls, msg=None)验证obj是cls的实例,不是则fail
12assertNotIsInstance(obj, cls, msg=None)验证obj不是cls的实例,是则fail

二、比较断言

序号断言方法断言描述
1assertAlmostEqual (first, second, places = 7, msg = None, delta = None)

验证first约等于second。 palces: 指定精确到小数点后多少位,

默认为7

2assertNotAlmostEqual (first, second, places, msg, delta)

验证first不约等于second。 palces: 指定精确到小数点后多少位,

默认为7 注: 在上述的两个函数中,如果delta指定了值,

则first和second之间的差值必须≤delta

3assertGreater (first, second, msg = None)验证first > second,否则fail
4assertGreaterEqual (first, second, msg = None)验证first ≥ second,否则fail
5assertLess (first, second, msg = None)验证first < second,否则fail
6assertLessEqual (first, second, msg = None)验证first ≤ second,否则fail
7assertRegexpMatches (text, regexp, msg = None)

验证正则表达式regexp搜索匹配的文本text。

regexp:通常使用re.search()

8assertNotRegexpMatches (text, regexp, msg = None)

验证正则表达式regexp搜索不匹配的文本text。

regexp:通常使用re.search()

说明:两个参数进行比较(>、≥、<、≤、约等、不约等)

三、复杂断言

序号断言方法断言描述
1assertListEqual(list1, list2, msg = None)验证列表list1、list2相等,不等则fail,同时报错信息返回具体的不同的地方
2assertTupleEqual (tuple1, tuple2, msg = None)验证元组tuple1、tuple2相等,不等则fail,同时报错信息返回具体的不同的地方
3assertSetEqual (set1, set2, msg = None)验证集合set1、set2相等,不等则fail,同时报错信息返回具体的不同的地方
4assertDictEqual (expected, actual, msg = None验证字典expected、actual相等,不等则fail,同时报错信息返回具体的不同的地方

四、示例

        (1)assertEqual(arg1, arg2),  判断arg1 == arg2  结果是一个bool值  可以是任意数据类型

                

        (2) assertIn(str1, str2)  判断str1是不是str2的子串, str1 in str2  结果是一个bool值  只能是字符串

                

         (3)具体用哪种断言方法,根据实际情况而定 常见:获取网页标题、url地址、元素的text文本、元素的某一个属性等。示例:      

 五、断言失败后续的代码不会被执行,所以可以使用异常处理

        异常处理的格式:

try:
    可能会出现异常的代码
except 指定异常类型:
    捕获到异常时执行的代码
else: 
    没有捕获到异常时执行的代码
finally:
    有没有异常都会执行

        示例:

def test_xueshu(self):
        driver = self.driver
        driver.find_element_by_link_text('学术').click()
        driver.switch_to.window(driver.window_handles[1])
        try:
            # 预期结果
            Expected = "https://xueshu.baidu.com"
            # 获取当前网页URL 实际结果
            Actual = driver.current_url
            # 断言
            self.assertEqual(Expected, Actual)
            # 在百度学术搜索自己名字
            driver.find_element_by_id('kw').send_keys('lilgaage')
            driver.find_element_by_id('su').click()
            sleep(2)
            # 动态时间
            now = time.strftime("%Y%m%d_%H%M%S")
            driver.get_screenshot_as_file("images/img_{}_百度学术搜索lilgaage.png".format(now))
        # 捕获到指定异常--->断言失败
        except AssertionError:
            print("断言失败,进入的不是百度学术页面")
            # 截图
            now = time.strftime("%Y%m%d_%H%M%S")
            driver.get_screenshot_as_file("images/img_{}_断言失败_不是百度学术搜索.png".format(now))
            # 抛出异常
            raise
        finally:
            print("断言结束")
  • 2
    点赞
  • 65
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值