Unittest-断言

1、Unittest断言

1.1 什么是断言?

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

1.2 为什么要学习断言?

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

1.3 UnitTest断言方法

说明:
	1. UnitTest中提供了非常丰富的断言方法,请参考附件资料 
	2. 复杂的断言方法在自动化测试中几乎使用不到,所以我们只需要掌握几个常用的即可

2、常用的Unittest断言方法

序号断言方法断言描述
1assertTrue(expr, msg=None)验证expr是true,如果为false,则fail
2assertFalse(expr, msg=None)验证expr是false,如果为true,则fail
3assertEqual(expected, actual, msg=None)验证expected==actual,不等则fail 【掌握】
4assertNotEqual(first, second, msg=None)验证first != second, 相等则fail
5assertIsNone(obj, msg=None)验证obj是None,不是则fail
6assertIsNotNone(obj, msg=None)验证obj不是None,是则fail
7assertIn(member, container, msg=None)验证是否member in container【掌握】
8assertNotIn(member, container, msg=None)验证是否member not in container

2.1 使用方法

断言方法已经在unittest.TestCase类中定义好了,而且我们自定义的测试类已经继承了 
TestCase,所以在测试方法中直接调用即可。

import unittest 

def add(x, y): 
	return x + y 

class TestAssert(unittest.TestCase): 
	def test01(self): 
		num = add(1, 2) 
		self.assertEqual(3, num) 

	def test02(self): 
		num = add(1, 2) 
		is_ok = num == 3 
		self.assertTrue(is_ok)

3、案例1

"""
    目标:断言练习
    案例:
        输入:正确用户名和密码  验证码为空
        断言:提示信息是否为,验证码不能为空!
        要求:如果断言出错,截屏保存。
"""
# 导包
import unittest
import time
from time import sleep
from selenium import webdriver


# 定义测试类 并 继承 unittest.TestCase
class TestTphopLogin(unittest.TestCase):

    # 定义初始化方法
    def setUp(self):
        # 获取浏览器驱动对象
        self.driver = webdriver.Firefox()
        # 打开 url
        self.driver.get("http://localhost")
        # 最大化浏览器
        self.driver.maximize_window()
        # 隐式等待
        self.driver.implicitly_wait(30)

    # 定义teardown
    def tearDown(self):
        # 关闭浏览器驱动
        sleep(2)
        self.driver.quit()

    # 定义登录测试方法 验证码为空
    def test_login_code_null(self):
        driver = self.driver
        # 点击登录连接
        driver.find_element_by_partial_link_text("登录").click()
        # 输入用户名
        driver.find_element_by_css_selector("#username").send_keys("13800001111")
        # 输入密码
        driver.find_element_by_css_selector("#password").send_keys("123456")

        # 输入验证码
        driver.find_element_by_css_selector("#verify_code").send_keys("")

        # 点击登录
        driver.find_element_by_css_selector(".J-login-submit").click()
        # 获取登录后提示信息
        result = driver.find_element_by_css_selector(".layui-layer-content").text
        print("result:", result)
        # 定义预期结果
        # expect_result = "验证码不能为空!"
        # 测试断言错误
        expect_result = "验证码不能为空!!"
        try:
            # 断言
            self.assertEqual(result, expect_result)
        except AssertionError:
            # 截图
            driver.get_screenshot_as_file("../image/{}.png".format(time.strftime("%Y_%m_%d_%H_%M_%S")))
            # 抛异常
            raise e


'''
需求:
    1、登录百度
    2、点击登录
    3、输入正确用户名错误密码
    4、断言提示信息
    5、错误信息截图
'''

# 导包
import time
import unittest
from time import sleep

from selenium import webdriver


# 实例化 测试类并继承UnitTest
class TestLogin(unittest.TestCase):

    # 定义初始化方法
    def setUp(self):
        #获取浏览器驱动
        self.driver = webdriver.Firefox()
        self.driver.get("https://www.baidu.com")
        #浏览器最大化
        self.driver.maximize_window()
        #隐式等待
        self.driver.implicitly_wait(30)

    # 定义teardown方法
    def tearDown(self):
        # 关闭浏览器驱动
        sleep(3)
        self.driver.quit()
    # 定义测试方法,输入正确用户名错误密码
    def test_error_login(self):
        driver = self.driver
        # 点击登录
        driver.find_element_by_css_selector("#s-top-loginbtn").click()
        # 输入用户名
        sleep(5)
        driver.find_element_by_css_selector(".pass-text-input-userName").send_keys("18700898062")
        # 输入密码
        driver.find_element_by_css_selector(".pass-text-input-password").send_keys("123456")
        # 点击确认
        driver.find_element_by_css_selector("#TANGRAM__PSP_11__submit").click()
        # 获取提示信息
        message = driver.find_element_by_css_selector("#TANGRAM__PSP_11__error").text
        print("提示信息为:", message)
        #正确提示信息
        message1 = "用户名或密码有误,请重新输入或!!"

        try:
            # 断言
            self.assertIn(message1, message)
            print("提示信息正确")
        except AssertionError:
            # 截图
            self.driver.get_screenshot_as_file("./{}.png".format(time.strftime("%Y_%m_%d_%H_%M_%S")))
            # 抛出异常
            raise

4、 断言扩展

"""
    目标断言扩展:
        两种实现方式:
            1. 使用unittest框架中的断言
            2. 使用python自带断言
"""
# 使用python自带断言 判断两个字符串是否相等
# assert "hello" == "hello"
# 不相等
# assert "hello" == "hello1" "出错啦啦啦!!!这俩不相等"

# 第二个字符串是否包含第一个字符串
# assert "h" in "hello"
# assert "ha" in "hello"

# 判断是否为True
# assert True
# assert False
# 0 为False ; 1为True
# assert 0
# assert 1
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

炫酷的腿毛!

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值