unittest框架(一)

什么是unittest框架?

  • unittest框架是专门用来进行执行代码测试的框架;
  • unittest是Python自带的单元测试包,被各种框架引用,比如django;
  • unittest很多用法和django自带的单元测试差不多,因为Django的TestCase继承了Python的unittest.TestCase

为什么使用unittest框架?

1.能够组织多个用例去执行
2.提供丰富的断言方法
3.提供丰富的日志与测试结果

unittest核心要素

架构图

1,TestCase

说明:一个TestCase就是一条测试用例,就是一个完整的测试流程。

1.新建类继承自 unittest.TestCase
2.测试的方法以 test 开头

import unittest

class MyTest(unittest.TestCase):
    def test_xxx(self):
        pass

2, TestSuite

说明:测试套件是把多条测试用例集合在一起,就是一个TestSuite;

1.实例化 suite 对象 suite = unittest.TestSuite()
2.将测试用例添加到 suite 中 suite.addTest(MyTest('test_xxx'))

import unittest

# 实例化 TestSuite
suite = unittest.TestSuite()

# addTest 可以接受:可调用对象、TestCase对象、TestSuite对象
suite.addTest(MyTest('test_xxx'))

3,TextTestRunner

说明:测试执行是用来执行测试用例套件

1.实例化 runner 对象 runner = unittest.TextTestRunner()
2.执行测试套件 runner.run(suite)

import unittest

suite = unittest.TestSuite()
suite.addTest(MyTest('test_xxx'))

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

# 执行测试套件
runner.run(suite)

案例

from unittest import TestCase
from unittest import TestCase
from unittest import TestSuite, TextTestRunner


class TestCase01(TestCase):
    def test_01(self):
        print("01 执行")

    def test_02(self):
        print("02 执行")

    def test_03(self):
        print("03 执行")


if __name__ == '__main__':
    suite = TestSuite()
    # 添加要执行的测试用例
    suite.addTest(TestCase01('test_01'))
    suite.addTest(TestCase01('test_02'))
    suite.addTest(TestCase01('test_03'))

    # 创建runner
    runner = TextTestRunner()
    runner.run(suite)

运行结果如下:

$ python test_1_case.py 
01 执行
.02 执行
.03 执行
.
----------------------------------------------------------------------
Ran 3 tests in 0.000s

OK

4,Fixture

说明:是一个概述,对一个测试用例环境的搭建和销毁就是一个Fixture;
包含setup 和 teardown

import unittest


class TestCase01(unittest.TestCase):
    def setUp(self):
        print('setUp')

    def tearDown(self):
        print('tearDown')

    def test_01(self):
        print("test_2 01 执行")

    def test_02(self):
        print("test_2 02 执行")

if __name__ == '__main__':
    suite = unittest.TestSuite()
    # 添加要执行的测试用例
    suite.addTest(TestCase01("test_01"))
    suite.addTest(TestCase01("test_02"))

    # 创建runner
    runner = unittest.TextTestRunner()
    runner.run(suite)

运行结果如下:

$ python test_2_fixture.py 
setUp
test_2 01 执行
tearDown
.setUp
test_2 02 执行
tearDown
.
----------------------------------------------------------------------
Ran 2 tests in 0.000s

OK

5,defaultTestLoader

说明: unittest.defaultTestLoader.discover 方法可以自动把指定目录下测试用例自动添加到测试套件中,避免手动一个个的添加测试用例。这个方法返回的就是 suite 对象。

5.1.指定要搜索的目录
5.2.调用 discover 方法生成 suite 对象

import unittest

if __name__ == '__main__':
    # 参数1:指定搜索的路径
    # 参数2:指定匹配文件,默认为'test*.py'
    suite = unittest.defaultTestLoader.discover('./', 'test_2_fixture.py')

    runner = unittest.TextTestRunner()

    runner.run(suite)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容