unittest编码规范

1.测试模块首先 import unittest测试类
2.必须继承 unittest.TestCase
3.测试方法必须以“test_”开头
4.模块名字,类名没有要求

模块、类、方法的前/后置方法示例:

  1. import logging
  2. import unittest
  3. def setUpModule(): # 模块前置方法
  4. print('moudle前置方法运行.....')
  5. global arg
  6. arg = list(range(10))
  7. print(arg)
  8. class unittest_demo(unittest.TestCase):
  9. @classmethod
  10. def setUpClass(cls): # 类前置方法,整个类只执行一次
  11. print('class前置方法running....')
  12. print('-------Init class-------')
  13. def setUp(self): # 前置方法,每执行一次test开头的方法,该方法执行一次
  14. print('func前置方法运行.....')
  15. print(arg)
  16. def test_demo1(self):
  17. print('test_demo1 is running')
  18. logging.info('info')
  19. logging.error('error')
  20. self.assertEqual(arg.pop(), 9)
  21. def test_demo2(self):
  22. print('test_demo2 is running')
  23. self.assertEqual(arg.pop(), 8)
  24. def test_demo3(self):
  25. print('test_demo3 is running')
  26. self.assertEqual(8, 8)
  27. def tearDown(self):
  28. print('func后置方法运行.....')
  29. print('*'*10)
  30. @classmethod
  31. def tearDownClass(cls):
  32. print('class后置方法running....')
  33. print('------over class-------')
  34. def tearDownModule():
  35. print('moudle后置方法运行.....')

生成测试报告

  1. if __name__ == '__main__':
  2. # 设置报告的路径
  3. report_path = os.path.join(os.path.dirname(__file__), 'report')
  4. # 通过当前时间命名报告
  5. now = time.strftime("%Y-%m-%d %H_%M_%S", time.localtime())
  6. filename = report_path + "/" + now + "_result.html"
  7. # file_name = os.path.join(os.getcwd(), 'report', now + '_result.html')
  8. # 建立一个套件-就是可以装多个用例
  9. suite = unittest.TestSuite()
  10. # 在这个套件中添加测试用例(可能通过类名,模块名等加载,这次用类名)
  11. suite.addTests(unittest.TestLoader().loadTestsFromTestCase(unittest_demo))
  12. # with open(file_name, 'wb') as fp:
  13. with open(filename, 'wb') as fp:
  14. runner = HTMLTestRunner(stream=fp, title='测试报告', description='测试用例')
  15. runner.run(suite)

⚠️运行unittest时需要切换到unittest模式

方法一:直接切换模式
image.png

方法二:添加一个python运行配置(unittest需要在python模式下运行)
image.png