一、unittest初级使用
单元测试中最核心的四个概念:test case(测试用例),test suite(测试套件),test runner(测试运行器),test fixture(测试环境数据准备和数据清理或者测试脚手架)
※test case:一个testcase的实例就是一个测试用例。测试前准备环境的搭建(setUp),执行测试代码(run),以及测试后环境的还原(tearDown)
※TestSuite:多个测试用例集合在一起。
※TestLoader:用来加载Testcase到TestSuite中。
※TextTestRunner:用来执行测试用例,其中run(test)会执行TestSuite/TestCase中的run(result)方法。
※test fixture:测试用例环境的搭建和销毁
1.在创建一个新类时,会继承unittest.TestCase。重写setUp和tearDown方法时,再调用unittest.main()执行用例,setUp和tearDown会在每条用例前后都执行:
import unittest class TestBaidu(unittest.TestCase): #每执行一个用例,都会执行setup()和teardown()方法 #如果跑所有用例,只运行一次前提条件和结束条件。则用setupclass()和teardownclass() def setUp(self): print("测试用例执行前的初始化操作========") def tearDown(self): print("测试用例执行完之后的收尾操作=====") def test_add(self): print(5+7) def test_sub(self): print(3-2) if __name__ == '__main__': unittest.main() 运行结果: >> 结果: 测试用例执行前的初始化操作======== 12 测试用例执行完之后的收尾操作===== 测试用例执行前的初始化操作======== 1 测试用例执行完之后的收尾操作===== <<
2.设置setupClass和teardownClass:执行所有测试用例,仅执行一次初始化条件和结束条件(如下代码可以看到,两个测试用例只执行了一次):
import unittest class TestBaidu(unittest.TestCase): #如果跑所有用例,只运行一次前提条件和结束条件。则用setupclass()和teardownclass() @classmethod def setUpClass(cls): print("在所有的测试用例执行之前,只执行一次============") @classmethod def tearDownClass(cls): print("在所有的测试用例执行之后,只执行一次============") def test_add(self): print(5+7) def test_sub(self): print(3-2) #python3中写不写都会执行的 if __name__ == '__main__': unittest.main() 运行结果: >> Testing started at 22:19 ... 在所有的测试用例执行之前,只执行一次============ 12 1 在所有的测试用例执行之后,只执行一次============ <<
二、testsuit使用
import unittest class TestBaidu(unittest.TestCase): def test01(self): print('test01测试...') def test02(self): print('test02测试...') def test03(self): print('test03测试...') if __name__ == '__main__': suit=unittest.TestSuite() #创建测试集 suit.addTest(TestBaidu('test01')) #测试集中添加需要运行的测试用例 suit.addTest(TestBaidu('test02')) #suit.addTest([TestBaidu('test01'),TestBaidu('test02')]) runner=unittest.TextTestRunner() #用来执行测试用例 runner.run(suit)
三、unittest.TestLoader.discover匹配目录下的所有用例,目录下的用例名称需要以test开头
import unittest import os #实例化测试套件对象 suit = unittest.TestSuite() #实例化TestLoader的对象 loader = unittest.TestLoader() #使用discover()去找一个目录下的所有测试用例的文件,并将返回数据添加到测试套件中。 s.addTests(loader.discover(os.getcwd())) run = unittest.TextTestRunner() run.run(s)
PS:觉得这篇文章有用的朋友,多多点赞打赏哦~!