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: 详细测试
'''
- 使用创建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: 详细测试
'''
浙公网安备 33010602011771号