1 UnitTest自动化测试框架简介
Unittest自动化测试框架是python语言自带的单元测试框架,UnitTest最初叫做PyUnit,早起一般应用于单元测试中,随着python的不断发展,UnitTest住建成长为一种简单易用的轻量级的自动化测试框架,后续随着技术的发展,UnitTest又衍生出一个更高级的自动化测试框架Pytest,因此Pytest自动化测试框架可以很容易的兼容UnitTest,在python自动化测试领域,使用最广泛的三种自动化测试框架为Pytest、UnitTest,RobotFramework,UnitTest是python自带的,无需另外单独安装
2 UnitTest四大组件
- text fixture:setUp(), tearDown(), setUP是前置条件,tearDown是清理和释放资源区
- test case:测试用例,通过继承unittest.TestCase来实现用例的继承,如下所示:
import unittest
class TestDemo01(unittest.TestCase):
pass
- test suite:测试套,或称为测试用例集
- test runner:执行器,一般通过runner来调用suite去执行测试
3 最简单的unittest用例组织形式
如下,测试类中只有一个测试函数,这是最简单的额形式,使用unittest.main()调用执行
import unittest
class TestDemo01(unittest.TestCase):
def test_01(self):
print("in test_01...")
if __name__=="__main__":
unittest.main()
执行结果如下:
Ran 1 test in 0.002s
OK
in test_01...
4 带有setUp和tearDown用例组织形式
setUp中的代码是在每个用例执行之前都会执行,tearDown中的代码是在每个用例执行结束后都会去执行,从而可以在setUp中编写初始化之类的操作,而在tearDown中编写清理环境或者释放资源的操作代码,如下:
import unittest
class TestDemo01(unittest.TestCase):
def setUp(self) -> None:
print("in setUp...")
def tearDown(self) -> None:
print("in testDown...")
def test_01(self):
print("in test_01...")
def test_02(self):
print("in test_02...")
if __name__=="__main__":
unittest.main()
执行结果如下:
in setUp...
in test_01...
in testDown...
in setUp...
in test_02...
in testDown...
Ran 2 tests in 0.002s
OK
5 带有setUpClass和tearDownClass的用例组织形式
setUpClass是在类的所有用例执行之前执行,只执行一次,tearDownClass中的代码是在类的所有用例执行结束之后,再执行,也是执行一次,代码如下:
import unittest
class TestDemo01(unittest.TestCase):
@classmethod
def setUpClass(cls) -> None:
print("in setUpClass...")
@classmethod
def tearDownClass(cls) -> None:
print("in tearDownClass...")
def setUp(self) -> None:
print("in setUp...")
def tearDown(self) -> None:
print("in testDown...")
def test_01(self):
print("in test_01...")
def test_02(self):
print("in test_02...")
if __name__=="__main__":
unittest.main()
执行结果如下:
in setUpClass...
in setUp...
in test_01...
in testDown...
in setUp...
in test_02...
in testDown...
in tearDownClass...
Ran 2 tests in 0.003s
OK