yandyand

导航

python测试模块unittest使用

#:unittest模块的使用

# :unittest模块测试
# :!!!!!!注意此次的测试用例方法必须以:     testXxx来进行命名!

unittest测试模式一共分为两种:
unittest.TestCase 单个功能测试/ 适用于测试一个代码程序的文件
unittest.TestSuite  一组测试用例/ 适用于执行测试一个测试目录里的测试文件

 

代码程序 :(文件名:程序测试_1.py

class Math:
    def add(self,num_a,num_b):
        return num_a + num_b
    def sub(self,num_a,num_b):
        return num_a - num_b

 

测试程序:(初始测试程序.py)

from 程序测试_1 import Math
import unittest
class TestMath(unittest.TestCase):  #:设置测试类,并且调用unittest.TestCase类的功能
    @classmethod        #:调用classmethod修饰符,直接可以使用类方法
    def setUpClass(self):                   #:全局前置处理
        print("unittest】程序测试开始")
    @classmethod                            #:全局后置处理
    def tearDownClass(self):
        print("unittest】程序测试结束")
    def tearDown(self):        #:每个测试用例执行之后的操作
        print("%s】测试结束"%(self.id()))       #:id()获取测试的方法名称
    def setUP(self):
        print("%s】测试开始"%(self.id()))
    def test_add(self):
        self.assertEqual(Math().add(1,2),3)         #:定义测试执行过程 self.asserEqual(实例化类名.(类中的方法),测试的预期结果)
    def test_sub(self):
        self.assertEqual(Math().sub(8,2),6)         #:同理定义测试过程

if __name__ == "__main__":
    unittest.main()         #:执行测试用例   直接调用unittest.main()函数

测试结果:
unittest】程序测试开始
__main__.TestMath.test_add】测试结束
__main__.TestMath.test_sub】测试结束
unittest】程序测试结束
..
----------------------------------------------------------------------
Ran 2 tests in 0.000s

OK

Process finished with exit code 0

 

#:功能测试文件跳过

测试程序:(初始测试程序.py)

# :测似功能跳过
# :@unittest.skip        # 跳过测试步骤
# :用法@unittest.skip("类名.方法()注释信息...")
from 程序测试_1 import Math
import unittest
class TestMath(unittest.TestCase):
    @classmethod
    def setUpClass(self):
        print("unittest】程序测试开始")
    @classmethod
    def tearDownClass(self):
        print("unittest】程序测试结束")
    def tearDown(self):
        print("%s】测试结束"%(self.id()))
    def setUP(self):
        print("%s】测试开始"%(self.id()))
    @unittest.skip("Math.sub()此测试方法已经测试了很多遍,不需要测试了!name:杨洋") #:使用unittest.skip修饰符来执行跳过测试功能
    def test_add(self):
        self.assertEqual(Math().add(1,2),3)
    def test_sub(self):
        self.assertEqual(Math().sub(8,2),6)

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

 

#:批量测试功能

'''
详细的控制过程:
unittest.TextTestRunner(verbosity=0/1/2/)
0:  简单测试
1:  默认测试/默认值
2:  详细测试
'''

  1. 使用创建test_XX.py文件

(我这里创建了一个文件)

 

 

 

test_2.py:

from 程序测试_1 import Math
import unittest
class TestMath(unittest.TestCase):  #:设置测试类,并且调用unittest.TestCase类的功能
    @classmethod        #:调用classmethod修饰符,直接可以使用类方法
    def setUpClass(self):                   #:全局前置处理
        print("unittest】程序测试开始")
    @classmethod                            #:全局后置处理
    def tearDownClass(self):
        print("unittest】程序测试结束")
    def tearDown(self):        #:每个测试用例执行之后的操作
        print("%s】测试结束"%(self.id()))       #:id()获取测试的方法名称
    def setUP(self):
        print("%s】测试开始"%(self.id()))
    def test_add(self):
        self.assertEqual(Math().add(1,2),3)         #:定义测试执行过程 self.asserEqual(实例化类名.(类中的方法),测试的预期结果)
    def test_sub(self):
        self.assertEqual(Math().sub(8,2),6)         #:同理定义测试过程

if __name__ == "__main__":
    unittest.main()         #:执行测试用例   直接调用unittest.main()函数

#:创建批量测试文件(批量测试.py)

批量测试.py:

# coding : UTF-8

import os,unittest      #:调用系统os模块和测试模块unittest模块
class RunAllTest(unittest.TestCase):
    def test_run(self):
        case_path = os.getcwd()     #:获取整个目录的内容
        discover = unittest.defaultTestLoader.discover(case_path,pattern="test_*.py")       #:执行所有的test_*.py文件      #:还需要调研这个os模块的具体使用方法
        runner = unittest.TextTestRunner(verbosity=2)           #:执行测试过程"unittest模块测试"
        runner.run(discover)        #:执行调用discover变量里面的所有文件
if __name__ == "__main__":
    unittest.main()
'''
详细的控制过程:
unittest.TextTestRunner(verbosity=0/1/2/)
0:  简单测试
1:  默认测试/默认值
2:  详细测试
'''

posted on 2020-11-09 17:06  yandyand  阅读(163)  评论(0)    收藏  举报