首页 > 编程知识 正文

python接口unittest测试框架,unittest测试框架组成

时间:2023-05-04 16:12:30 阅读:196407 作者:3718

"""UnitTest是python自带的单元测试框架TestCase测试用例TestSuite测试套件,可以把多个TestCase集成到一个TestSuite中TestRunner执行测试用例TestLoader自动从代码中加载多个测试用例TestCaseFixure是UnitTest的特性"""# ************************************************************************# testCase# 案例:定义一个实现加法操作函数,并测试# 定义函数"""步骤:1.导入unittest模块2.实现一个类,必须继承unittest.TestCase类3.类中的每个方法为一个测试用例必须以test开头4.在类的外面,函数外面运行"""# 新建py文件testcase_01import unittestdef my_sum(a,b): return a + b# 定义类class my_test(unittest.TestCase): # 编写第一个测试用例,测试用例必须以test开头 def test_01(self): print(my_sum(4,8)) # 编写第二个测试用例 def test_02(self): print(my_sum(24,523))# unittest会自动执行代码# ************************************************************************# TestSuite 把多个测试用例整合成一个测试套件"""使用方法1.实例化unittest.testsuite方法 如suite1 = unittest.TestSuite()2.调用addTest()方法添加测试用例 suite1.addTest(classname(“方法名”))"""import unittest # 导入unittestimport testcase_01 # 导入测试用例py文件,导入的py文件名格式与变量一致# 实例化unittest.TestSuitesuite = unittest.TestSuite()# 添加testcase_01中的测试用例suite.addTest(testcase_01.my_test('test_01'))suite.addTest(testcase_01.my_test('test_02'))# 截止到现在执行后无结果,上面仅仅将测试用例添加到测试套件中,不能执行测试用例# suite.addTest(unittest.makeSuite(类名))一次性添加类里面的所有测试用例到套件中# 效果同上suite.addTest(unittest.makeSuite(testcase_01.my_test))# ************************************************************************# TextTestRunner执行测试套件中的测试用例"""使用方法1.实例化TextTestRunner方法 如runner = unittest.TextTestRunner()2.调用run()方法,并将要执行的套件设为参数即可"""runner = unittest.TextTestRunner() # 实例化TextTestRunner对象runner.run(suite) #调用对象的run方法执行suite套件中的测试用例# ************************************************************************# TestLoader通过discover()方法自动搜索指定开头的py文件,并可以将查到的测试用例组装到测试套件中"""使用方法1.suite1 = unittest.TestLoader().discover(test_dir,pattern='test*.py')2.调用run()方法,并将要执行的套件设为参数即可"""# 提前新建一个名字为my开头的测试用例文件# 用discover方法按参数条件查询文件,并将查询到的问题件放在suite中suite1 = unittest.TestLoader().discover("./","my*.py") # "./"意思为在当前目录中寻找文件,"my*.py"代表以my开头的py文件,*为通配符# 执行调用run = unittest.TextTestRunner()run.run(suite1)# ************************************************************************# Fixture在测试用例执行之前和之后自动调用指定的函数# 可以控制每个方法、类、模块的执行前后的调用"""方法级控制初始化-前置处理: def setUp(self)销毁-后置处理:def tearDown(self)每个方法执行的时候前后置方法都会被执行一次"""def my_sum(a,b): return a + b# 定义类class my_test(unittest.TestCase): # 初始化处理setup def setUp(self): print('setup被执行了') # 销毁后置处理tearDown def tearDown(self): print('tearDown被执行了') def test_01(self): print(my_sum(4,8)) # 编写第二个测试用例 def test_02(self): print(my_sum(24,523))"""类级控制,为类方法,前面必须加上@classmethod初始化-前置处理: @classmethod def setUpClass(cls)销毁-后置处理:@classmethod def tearDownClass(cls)类执行的时候前后置方法会各执行一次"""def my_sum(a,b): return a + b# 定义类class my_test(unittest.TestCase): @classmethod # 类控制初始化调用函数,类开始执行时调用 def setUpClass(cls): print('setupclass被执行了') @classmethod # 类控制销毁调用函数,类执行结束时调用 def tearDownClass(cls): print('tearDownclass被执行了') # 初始化处理setup def setUp(self): print('setup被执行了') # 销毁后置处理tearDown def tearDown(self): print('tearDown被执行了') def test_01(self): print(my_sum(4,8)) # 编写第二个测试用例 def test_02(self): print(my_sum(24,523))"""模块级控制初始化-前置处理: def setUpModule()销毁-后置处理:def tearDownModule()一个py文件执行一次,写在import后"""def setUpModule(): print('setupModule被执行了')def tearDownModule(): print('tearDownModule被执行了')def my_sum(a,b): return a + b# 定义类class my_test(unittest.TestCase): @classmethod # 类控制初始化调用函数,类开始执行时调用 def setUpClass(cls): print('setupclass被执行了') @classmethod # 类控制销毁调用函数,类执行结束时调用 def tearDownClass(cls): print('tearDownclass被执行了') # 初始化处理setup def setUp(self): print('setup被执行了') # 销毁后置处理tearDown def tearDown(self): print('tearDown被执行了') def test_01(self): print(my_sum(4,8)) # 编写第二个测试用例 def test_02(self): print(my_sum(24,523))

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。