1、定义
首先import unittest导入模块
unittest是单元测试的一个框架
首先了解一些定义
TestCase 测试用例
TestSuite 测试套件,多个测试用例集合在一起
TestLoader 加载TestCase到TestSuite中
TestRunner 执行测试用例的,测试的结果会保存在TestResult实例中,包括运行了多少测试用例,成功了多少,失败了多少等信息
注:单元测试中的测试用例必须以test开头,用例的执行顺序是按照字母顺序执行的
2、测试报告
1)导入测试报告模板,import HTMLTestRunner。
该模板生成的测试报告相对简单,界面不美观
unittest.main()#他会帮你运行当前这个python里面所有的测试用例
suite=unittest.TestSuite()#定义一个测试套件
suite.addTest(unittest.makeSuite(TestCalc))#这个类里面所有的测试用例
f=open('report.html','wb')#打开一个测试报告的文件
runner=HTMLTestRunner.HTMLTestRunner(stream=f,title='测试结果',description='这是描述')
runner.run(suite)#运行 难看的测试报告
2)导入测试报告模板,from BeautifulReport import BeautifulReport
该模板生成的测试报告更详细,包含测试结果,饼状图,表格,以及详细的运行结果
suite = unittest.TestSuite() # 定义一个测试套件
suite.addTest(unittest.makeSuite(TestCalc)) # 这个类里面所有的测试用例
result = BeautifulReport(suite)
result.report(filename='测试报告', description='这是描述', log_path='.') # 运行好看的测试报告
3)单元测试具体代码
其中setUp()方法每个用例执行之前都会执行他,tearDown()每个用例结束之后都会执行他
setUpclass()所有用例执行之前会执行他,tearDown()所有用例执行结束之后都会执行他
import unittest
import HTMLTestRunner
from BeautifulReport import BeautifulReport
def calc(x, y):
return x + y
class TestCalc(unittest.TestCase):
def test_pass_case(self):
'''这个是通过的测试用例'''
print('这是通过用例')
res = calc(1, 2)
self.assertEqual(3, res)
self.assertNotEquals(2, 3) # 返回的结果不一样
def test_fail_case(self):
'''这个是失败的测试用例'''
print('这是失败的测试用例')
res = calc(9, 8)
self.assertEqual(98, res)
def test_haha(self):
'''hahaha'''
self.assertEqual(1, 2)
def setUp(self): # 每个用例执行之前都会执行他
print('我是setUp')
def tearDown(self): # 每个用例运行完都会执行他
print('我是tearDown')
@classmethod
def setUpClass(cls): # 所有的用例执行之前执行一次
print('我是setUpClass')
@classmethod
def tearDownClass(cls): # 所有的用例执行之后都执行一次
print('我是tearDownClass')
if __name__ == '__main__':
unittest.main() # 他会帮你运行当前这个python里面所有的测试用例
suite = unittest.TestSuite() # 定义一个测试套件
# suite.addTest(TestCalc('test_pass_case'))
# suite.addTest(TestCalc('test_fail_case'))
suite.addTest(unittest.makeSuite(TestCalc)) # 这个类里面所有的测试用例
# f=open('report.html','wb')#打开一个测试报告的文件
# runner=HTMLTestRunner.HTMLTestRunner(stream=f,title='测试结果',description='这是描述')
# runner.run(suite)#运行 难看的测试报告
result = BeautifulReport(suite)
result.report(filename='测试报告', description='这是描述', log_path='.') # 运行好看的测试报告
浙公网安备 33010602011771号