python单元测试框架unittest学习笔记二--TestCase、TestSuite、TestLoader、TextTestRunner

unittest框架中各元素的学习

1、TestCase类

unittest.TestCase()类的实例表示单元测试宇宙中的逻辑测试单元。此类旨在用做基类,其子类将实现特定的测试用例。此类实现测试运行程序所需的接口,以允许它驱动测试,以及测试代码可用于检查和报告各种故障的方法

即每个测试函数必须继承TestCase类,测试函数并以test_开头命名

语法:

1.导入unitest包

2.定义测试类:新建测试类必须继承unitest.TestCase

3.定义测试方法:测试方法名称命名必须以test开头

4.调用unitest.main()函数执行测试用例

import unittest

def sum(a,b):
    return a+b


class test01(unittest.TestCase):
    def test_01(self):
        print("in function test 01")

    def test_02(self):
        print("in function test 02")

    def test_03(self):
        print(sum(1,8))

    def test_04(self):
        print(sum(6,9))

    def test_05(self):
        print(sum("aaa",9))


if __name__ == '__main__':
    unittest.main()

二、TestSuite

 

 

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

使用:

1、先实例化:suite = unnitest.TestSuit()

suite:为TestSuite实例化的名称

2、添加实例:suite.addTest(className("methodName"))

className 为类名;methodName为方法名

3、添加扩展:

suite.addTest(unnitest.makeSuite(className))

搜索指定className内的test开头方法并添加到测试套件中

以上步骤只能将测试用例的方法添加到测试套件中,并不能执行,如果要执行则需要TextTestrunner()方法来执行

 

import unittest
import test_unitest01

suite = unittest.TestSuite()
# suite.addTest(test_unitest01.test01("test_03"))
# suite.addTest(test_unitest01.test01("test_04"))
# 只是把测试用例添加到了测试套件中,并不是执行测试用例,这种比较麻烦还有一种
# 使用unittest.makeSuite方法一次导入一个类中的所有测试方法
suite.addTest(unittest.makeSuite(test_unitest01.test01))

  

三、TextTestRunner

作用,执行suite中的测试用例

使用方法:

--先实例化TextTestRunner()实例对象

--调用对象的run方法

---只要把suite作为参数传递到run方法中

 

# 使用unittest.makeSuite方法一次导入一个类中的所有测试方法
suite.addTest(unittest.makeSuite(test_unitest01.test01))
# 把整个测试类中的方法添加进来
runner = unittest.TextTestRunner()
runner.run(suite)

  

四、TestLoader

可以从指定目录查找指定的py文件中的所有测试用例,自动加载到TestSuite中

"""
testLoader的使用方法
可以从指定目录查找指定的py文件中的所有测试用例,自动加载到TestSuite中
"""
import unittest
suite = unittest.TestLoader().discover("./","test_u*.py")
runner = unittest.TextTestRunner()
runner.run(suite)

  

Testsuite和TestLoader的使用区别:

当只要执行py文件中多个测试用例中的几个,而不是全部执行时,那么使用testsuite的addtest方法加载指定的测试用例

当执行所有的py文件中的所有的测试用例时,那么使用TestLoader

小结:

所有的testcase最终都需要使用texttestrunner来执行

TextTestRunner执行的是TestSuite

一个TestSuite中可以有多个TestCase

posted @ 2021-07-28 22:51  GalaxyStar  阅读(402)  评论(0编辑  收藏  举报