unittest框架-基础知识

一、什么是UnitTest框架

UnitTest是python自带的一个单元测试框架,用它来做单元测试。

对于测试来说,unittest框架的作用是自动化脚本(用例代码)执行框架,使用unittest框架来管理运行多个测试用例的。

二、为什么使用框架

1. 能够组织多个用例去执行

2.提供丰富的断言方法(让程序代替人工自动的判断预期结果和实际结果是否相符)

3. 能够生成测试报告

三、UnitTest核心要素

1. Testcase(测试用例)

TestCase是unittest框架的组成部分,不是手工和自动化所说的用例

主要作用:每个TestCase(测试用例)都是一个代码文件,在这个代码文件中来书写真正的用例代码

"""
代码的目的:学习TestCase(测试用例)模块的书写方法
"""
# 1.导入unittest包
import unittest

# 2.自定义的测试类,只要继承unittest模块中的TestCase类即可


class TestDemo(unittest.TestCase):
    # 书写测试方法,即用例代码
    # 书写要修,测试方法必须以test_ 开头(本质是以test开头)
    def test_method1(self):
        print('测试方法 1')

    def test_method2(self):
        print('测试方法 2')

# 4 执行用例(方法)
# 4.1 将光标放在 类名 的后面运行,会执行类中的所有的测试方法
# 4.2 将光标放在 方法名 的后面运行,只执行当前的方法

2. TestSuite

TestSuite(测试套件),用来组装(打包)、管理多个TestCase(测试用例的)

"""
代码的目的:学习TestSuite(套件)模块的书写方法
"""
# 1. 导入 unittest包
import unittest

# 2. 实例化testsuite对象
from hm_08_testcase import TestDemo
from hm_09_testcase import TestDemo1

suite = unittest.TestSuite()

# 3. 使用套件对象添加用例方法
# 方法一:套件对象.addTest(测试类名('方法名'))
suite.addTest(TestDemo('test_method1'))
suite.addTest(TestDemo('test_method2'))
suite.addTest(TestDemo1('test_method1'))
suite.addTest(TestDemo1('test_method2'))
# 方法二 将一个测试类中的所有方法进行添加
# 套件对象.addTest(unittest.makeSuite(测试类名))
suite.addTest(unittest.makeSuite(TestDemo))

# 4.实例化运行对象
runner = unittest.TextTestRunner()

# 5. 使用运行对象去执行套件对象   运行对象.run(套件对象)
runner.run(suite)

3. TestRunner

TestRunner(测试执行,测试运行),用来执行TestSuite(测试套件)的

4. TestLoader

TestLoader(测试加速),功能是对TestSuite(测试套件)功能的补充,用来组装(打包)、管理多个TestCase(测试用例的)

"""
TestLoader 的使用
"""
# 1. 导包
import unittest

# 2. 实例化加载对象并添加实例
# unittest.TestLoader().discover("用例所在的路径", "用例的代码文件名")
# 用例的代码文件名 支持通配符
suite = unittest.TestLoader().discover("./case", "*")

# 3. 实例化运行对象,并执行
unittest.TextTestRunner().run(suite)

5. Fixture

Fixture(测试夹具),书写在TestCase代码中的,是一个代码结构,

5.1 方法级别

可以在每个方法执行前后都会执行的内容

# 方法执行之前

def setUp(self):

        每个测试方法执行之前都会执行

# 方法执行之后

def tearDown(self):

        每个测试方法执行之后都会执行

5.2 类级别

可以在每个测试类中所有方法执行前后都会执行的内容,在整个类中,执行前后各一次

类级别的Fixture方法,是一个类方法

#类中所有方法之前

@classmethod

def setUpClass(cls):

        pass

@classmethod

def tearDownClass(clas):

        pass

import unittest


class TestLogin(unittest.TestCase):
    def setUp(self):
        print("输入网址......")

    def tearDown(self):
        print("关闭网页")

    @classmethod
    def setUpClass(cls):
        print("打开浏览器")

    @classmethod
    def tearDownClass(cls):
        print("关闭浏览器")

    def test_login(self):
        print("输入正确的账户密码")

    def test_login_error(self):
        print("输入错误的账户密码")

四、UnitTest的断言

1. 断言的结果

断言的结果有两种

  • True,用例通过
  • False,代码抛出异常,用例不通过

1. 常用的UnitTest断言方法

断言方法 断言描述 优先级
assertTrue(expr,msg=None) 验证expr是true,如果是false,则为fail
assertFalse(expr,msg=None) 验证expr是flase,如果为true,则fail
assertEqual(expected,actual,msg=None) 验证expected==actual,不等则fail 重点
assertIn(member,container,msg=None) 验证是否member in container 重点

你可能感兴趣的:(自动化测试,单元测试,压力测试,python)