一、unittest
unittest 是python自带的一个模块,可以用它进行单元测试。
为什么要使用unittest?
能够阻止多个用例去执行;提供丰富的断言方法;提供丰富的日志与测试结果。
TestCase:测试用例,用类的方式组织对一个功能的多项测试。
Fixture:夹具、用来固定测试环境
TestSuite:测试套件,组织多个TestCase
TestRunner:用来执行TestSuite,并可以导出测试结果
入门案例:
1、创建测试类:需要继承于 unittest .TestCase
2、书写测试方法:需要以test开头
3、执行测试
import unittest
class TestOne(unittest.TestCase):
def test_01(self):
print("这是test_01")
def test_02(self):
print("这是test_02")
if __name__ == '__main__':
unittest.main()
二、unittest断言
import unittest
class TestOne(unittest.TestCase):
def test_01(self):
print("这是test_01")
response = "数据提交成功"
self.assertIn("成功",response)
def test_02(self):
print("这是test_02")
if __name__ == '__main__':
unittest.main()
三、子测试subtest
有子测试可以执行多个测试,而且有多个结果;没有子测试的话,只能执行一次且只有一次结果。
import unittest
class NumbersTest(unittest.TestCase):
def test_even(self):
for i in range(0,6):
with self.subTest(i=1):
self.assertEqual(i%2,0)
import unittest
class NumbersTest(unittest.TestCase):
def test_even(self):
for i in range(0,6):
self.assertEqual(i%2,0)
四、unittest 夹具
import unittest
def setUpModule():
print("setupModule")
def tearDownModule():
print("teardownModule")
class TestOne(unittest.TestCase):
@classmethod
def setUpClass(cls):
print("setUpClass")
@classmethod
def tearDownClass(cls):
print("tearDownClass")
def setUp(self):
print("setUp")
def tearDown(self):
print("tearDown")
def test_01(self):
print("这是test_01")
response = "数据提交成功"
self.assertIn("成功",response)
def test_02(self):
print("这是test_02")
if __name__ == '__main__':
unittest.main()
五、testSuite 测试套件
import unittest
from unittest import TextTestRunner
from test_unit_01 import TestOne
suite = unittest.TestSuite()
#添加测试类的单个方法
#suite.addTest(TestOne("test_01"))
#添加测试类的多个方法
suite.addTests(map(TestOne,["test_01","test_02"]))
runner = TextTestRunner()
runner.run(suite)
六、测试报告生成
import HtmlTestRunner
runner = HtmlTestRunner.runner.HTMLTestRunner()
runner.run(suite)