一、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)
网友评论