概念
- 一、什么是单元测试&单元测试的对象
定义:单元测试是用来对一个模块、一个函数或者一个类来进行正确性检验的测试工作。
test case:一个testcase的实例就是一个测试用例。测试前准备环境的搭建(setUp),执行测试代码(run), 以及测试后环境的还原(tearDown)
TestSuite:多个测试用例集合在一起。
TestLoader:用来加载Testcase到TestSuite中。
TextTestRunner:用来执行测试用例,其中run(test)会执行 TestSuite/TestCase中的run(result)方法。
test fixture:测试用例环境的搭建和销毁
unittest 模块可以通过命令行运行模块、类和 独立测试方法的测试:
python -m unittest test_module1 test_module2
python -m unittest test_module.TestClass
python -m unittest test_module.TestClass.test_method
批量执行代码
python -m unittest discover
####
-s 参数表示 路径,默认当前路径
-p 表示要匹配的py文件,默认test*.py
####
python -m unittest discover -s project_directory -p "*_test.py"
python -m unittest discover project_directory "*_test.py"
setup和teardown
import unittest
class Test_Math(unittest.TestCase):
#每执行一个用例,都会执行setup()和teardown()方法
#如果跑所有用例,只运行一次前提条件和结束条件。则用setupclass()和teardownclass()
def setUp(self):
print("测试用例执行前的初始化操作========")
def tearDown(self):
print("测试用例执行完之后的收尾操作=====")
def test_addTwoNum_01(self):
print(5+7)
def test_subTwoNum_02(self):
print(3-2)
结果:
测试用例执行前的初始化操作========
12
测试用例执行完之后的收尾操作=====
测试用例执行前的初始化操作========
1
测试用例执行完之后的收尾操作=====
设置setup和teardown:每次用例执行前都会执行初始化条件和结束条件
setupClass和teardownClass
import unittest
class Test_Math(unittest.TestCase):
#如果跑所有用例,只运行一次前提条件和结束条件。则用setupclass()和teardownclass()
@classmethod
def setUpClass(cls):
print("在所有的测试用例执行之前,只执行一次============")
@classmethod
def tearDownClass(cls):
print("在所有的测试用例执行之后,只执行一次============")
def test_addTwoNum_01(self):
print(5+7)
def test_subTwoNum_02(self):
print(3-2)
#python3中写不写都会执行的
if __name__ == '__main__':
unittest.main()
结果:
Testing started at 22:19 ...
在所有的测试用例执行之前,只执行一次============
12
1
在所有的测试用例执行之后,只执行一次============