UnitTest断言


目标

1. 理解什么是断言
2. 掌握断言assertEqual、assertIn方法
3. 了解UnitTest其他断言方法

1. UnitTest断言

1.1 什么是断言?

概念:让程序代替人为判断测试程序执行结果是否符合预期结果的过程

1.2 为什么要学习断言?

自动化脚本在执行的时候一般都是无人值守状态,我们不知道执行结果是否符合预期结果,所以我们需要让程序代替人
为检测程序执行的结果是否符合预期结果,这就需要使用断言;

1.3 UnitTest断言分类

1. 基本布尔型断言
2. 比较断言
3. 复杂断言

提示:
    1. 这里这介绍基本布尔类型断言
    2. 比较断言、复杂断言有兴趣的同学请参考4.4附件资料

基本布尔型断言(掌握常用即可)

说明:结果只有True和False
序号 断言方法 断言描述
1 assertEqual(arg1, arg2, msg=None) 验证arg1=arg2,不等则fail 【掌握】
2 assertNotEqual(arg1, arg2, msg=None) 验证arg1 != arg2, 相等则fail
3 assertTrue(expr, msg=None) 验证expr是true,如果为false,则fail
4 assertFalse(expr,msg=None) 验证expr是false,如果为true,则fail
5 assertIsNone(expr, msg=None) 验证expr是None,不是则fail
6 assertIsNotNone(expr, msg=None) 验证expr不是None,是则fail
7 assertIn(arg1, arg2, msg=None) 验证arg1是arg2的子串,不是则fail【掌握】

1.4 案例

需求:
    1. iweb项目登陆,输入正确用户名和密码,断言登录成功的用户名是否为admin,如果断言失败截图保存

扩展:
    1. 图片名称为动态-时间
    2. 图片名称添加断言错误信息

实现步骤分析

1. 成功登陆
2. 获取登陆后的信息
3. 添加断言

断言主要代码:

...
    # 获取登陆信息
    text = self.driver.find_element_by_css_selector(".loginfo").text
    print("登陆成功信息为:",text)
    try:
        # 使用断言 判断text是否包含admin字符
        self.assertIn("admin",text)
    except AssertionError:
        driver.get_screenshot_as_file("../Image/02img.jpg")
        # 抛出异常
        raise
...

断言总结

1. 什么是断言?
2. 需要掌握哪个断言?
3. 断言异常类
4. 如何获取断言错误信息
5. 时间格式(年_月_日 时_分_秒)

回顾

 1.3 为什么使用UnitTest框架?    
    1. 能组织用例和执行用例
    2. 提供丰富的断言方法
    3. 提供丰富的日志与测试结果


1. UnitTest用例组织和执行用例 完成
2. 断言方法 完成
3. 接下来我们就学习生成测试结果-HTML报告的生成