1 import unittest 2 import HTMLTestRunner, xmlrunner 3 class My(unittest.TestCase): # 每一个类都是一个测试用例,注意必须继承 unittest.TestCase 4 def testB(self): # 用例步骤的定义 必须以test开头 5 '''这是BBB''' # 该注释可在 HTMLTestRunner报告中展示在用例步骤描述中 6 self.assertEqual(2, 2) 7 8 def testA(self): 9 self.assertEqual(2, 2) 10 11 class My2(unittest.TestCase): 12 def testC(self): 13 self.assertEqual(2, 1) 14 15 if __name__ == '__main__': 16 # unittest.main() # 执行当前文件中所有的测试用例 17 suite = unittest.TestSuite() # 初始化suite 18 suite.addTest(unittest.makeSuite(My)) # 添加类My中的所有用例步骤到suite中 19 suite.addTest(My2('testC')) # 添加某个用例的某一个步骤 20 # 生成HTMLTestRunner测试报告 21 fw = open('test.html', 'wb') # 初始化HTMLTestRunner测试报告 22 runner = HTMLTestRunner.HTMLTestRunner(stream=fw, title='测试', description='描述Test') # 23 runner.run(suite) 24 # 生成xmlrunner测试报告 该报告供主要供Jenkins使用 25 runner2 = xmlrunner.XMLTestRunner(output='.') 26 runner2.run(suite)
1 import unittest 2 3 class MyTest(unittest.TestCase): 4 @classmethod 5 def setUpClass(cls): # serUpClass 为用例初始化 6 print('我是setupclass') 7 @classmethod 8 def tearDownClass(cls): # tearDownClass 为用例执行结束后处理 9 print('我是teardownclass') 10 11 def setUp(self): # 每个用例步骤运行开始前执行 12 print('每个用例运行之前都会运行我') 13 def tearDown(self): # 每个用例步骤运行结束后执行 14 print('每个用例运行之后都会再运行我') 15 def testnidaye(self): # 用例步骤 16 self.assertEqual(1, 1) 17 18 19 if __name__ == '__main__': 20 unittest.main() # 执行所有用例
多文件指获取测试用例
1 import unittest, HTMLTestRunner 2 3 suite = unittest.TestSuite() # 定义空的测试用例集 4 all_case = unittest.defaultTestLoader.discover( # 获取指定目录下特定文件中的测试用例 5 r'/Users/luohailong/PycharmProjects/unittest/case', '*.py' 6 ) 7 8 for case in all_case: # 循环将测试用例添加至用例集中 9 print(case) 10 suite.addTests(case) 11 12 # 执行用例并生成报告 13 fw = open('report.html', 'wb') 14 runner = HTMLTestRunner.HTMLTestRunner( 15 stream=fw, title='多个文件执行用例' 16 ) 17 runner.run(suite)