unittest编码规范
1.测试模块首先 import unittest测试类
2.必须继承 unittest.TestCase
3.测试方法必须以“test_”开头
4.模块名字,类名没有要求
模块、类、方法的前/后置方法示例:
import logging
import unittest
def setUpModule(): # 模块前置方法
print('moudle前置方法运行.....')
global arg
arg = list(range(10))
print(arg)
class unittest_demo(unittest.TestCase):
@classmethod
def 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)
@classmethod
def 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模式下运行)