【python】unittest单元测试

打印 上一主题 下一主题

主题 1050|帖子 1050|积分 3150

根本使用

下面是根据文档写的一个demo,主要的内容根本都包含了,使用时导入自己的业务类测试类中的方法就行。
  1. import unittest
  2. # 测试类不强制test开头,仅作为规范。但必须继承unittest.TestCase
  3. class TestClass(unittest.TestCase):
  4.     @classmethod
  5.     def setUpClass(cls):
  6.         print('测试类开始之前(所有测试方法执行之前)执行,相关初始化操作')
  7.     @classmethod
  8.     def tearDownClass(cls):
  9.         print('测试类结束之前(所有测试方法执行之后)执行,相关清理操作')
  10.     def setUp(self):
  11.         print('每个测试方法执行前执行')
  12.     def tearDown(self):
  13.         print('每个测试方法执行后执行')
  14.     # 测试方法必须以test开头,testFun、test_fun都可
  15.     def test_fun1(self):
  16.         self.assertEqual(1 + 1, 2)
  17.         # 校验with内部代码是否抛出预期异常 出现异常测试通过 反之不通过
  18.         with self.assertRaises(ZeroDivisionError):
  19.             self.assertEqual(1 / 0, 1)
  20.     @unittest.skip  # 跳过下面这个测试
  21.     def test_fun2(self):
  22.         self.assertTrue(1)
  23. if __name__ == '__main__':
  24.     unittest.main()
复制代码
setUpClass、tearDownClass、setUp、tearDown都可以省略。其他的一些校验范例参考下图:

不同启动方式的区别

测试的两种启动执行方式:
1)脚本中unittest.main()启动执行
   实际测试中(pycharm环境),假如一个脚本中有多个测试类、一个测试类中有多个测试方法的话,这种启动方式每次执行的命令背面的参数都大概会变革:
  

  • 大概会只是一个模块名,这时间会执行模块中所有测试类的全部方法
  • 也大概会是模块名.类名,只测试该类中的所有测试方法
  • 也有大概会是模块名.类名.方法名的组合,只测试单独的一个方法
  所以这种方式启动的话,发起脚本中只写一个测试类,且类中只有一个测试方法,所有的测试逻辑都放在该方法里。
  

2)命令行启动执行
   这种方式可以直接指定模块、具体的测试类及测试方法等。

假如指定模块,会测试模块中所有测试类的全部方法。(命令执行目次下须要能搜索到指定模块,留意模块名不包含.py)
  

更多细节参考API:
https://docs.python.org/3/library/unittest.html(en)
https://docs.python.org/zh-cn/3/library/unittest.html(cn)

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

嚴華

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表