unittest编码规范
1.测试模块首先 import unittest测试类
2.必须继承 unittest.TestCase
3.测试方法必须以“test_”开头
4.模块名字,类名没有要求
模块、类、方法的前/后置方法示例:
import loggingimport unittestdef setUpModule(): # 模块前置方法print('moudle前置方法运行.....')global argarg = list(range(10))print(arg)class unittest_demo(unittest.TestCase):@classmethoddef setUpClass(cls): # 类前置方法,整个类只执行一次print('class前置方法running....')print('-------Init class-------')def setUp(self): # 前置方法,每执行一次test开头的方法,该方法执行一次print('func前置方法运行.....')print(arg)def test_demo1(self):print('test_demo1 is running')logging.info('info')logging.error('error')self.assertEqual(arg.pop(), 9)def test_demo2(self):print('test_demo2 is running')self.assertEqual(arg.pop(), 8)def test_demo3(self):print('test_demo3 is running')self.assertEqual(8, 8)def tearDown(self):print('func后置方法运行.....')print('*'*10)@classmethoddef tearDownClass(cls):print('class后置方法running....')print('------over class-------')def tearDownModule():print('moudle后置方法运行.....')
生成测试报告
if __name__ == '__main__':# 设置报告的路径report_path = os.path.join(os.path.dirname(__file__), 'report')# 通过当前时间命名报告now = time.strftime("%Y-%m-%d %H_%M_%S", time.localtime())filename = report_path + "/" + now + "_result.html"# file_name = os.path.join(os.getcwd(), 'report', now + '_result.html')# 建立一个套件-就是可以装多个用例suite = unittest.TestSuite()# 在这个套件中添加测试用例(可能通过类名,模块名等加载,这次用类名)suite.addTests(unittest.TestLoader().loadTestsFromTestCase(unittest_demo))# with open(file_name, 'wb') as fp:with open(filename, 'wb') as fp:runner = HTMLTestRunner(stream=fp, title='测试报告', description='测试用例')runner.run(suite)
⚠️运行unittest时需要切换到unittest模式
方法一:直接切换模式
方法二:添加一个python运行配置(unittest需要在python模式下运行)
