Python语法-unittest

大纲

1
2
3
unittest介绍
unittest使用教程
unittest中的方法说明

unittest介绍

unnittest是Python中使用的单测模块,能实现对模块,类,方法的自动调用执行,断言测试,环境管理,结果输出的功能

原理:

unittest构成要素,主要由以下几部分组成:

  • testcase:待测对象,待测对象必须要以test,类方法必须含test开头命名;
  • TestLoader类:unittest中的类,用来获取模块中的待测对象;返回待测对象的列表;
  • TestSuit:测试套件,将测试case加到套件,套件会根据加入的顺序来确认执行顺序;
    • 该类的addTest方法,可将测试对象加到套件中,但对结构有要求,必须保持addTest(测试类(具体测试方法)),这种实现方案能保证最先加入套件的最先被执行;
    • 该类的另一个方法addTests,也可将测试对象加到套件中,但其对结构也有要求,必须保持addTests([测试类1(测试方法1),测试类1(测试方法2)])
    • 这种方法能保证直接将获取的对象加入测试套件,执行顺序按加入套件的顺序,一般是按test的命名顺序:
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      	testloader = unittest.TestLoader()
      # 获取测试类里面case名,以固定顺序数组返回
      testnames = testloader.loadTestsFromTestCase(t)
      print(testnames)
      suite = unittest.TestSuite()
      suite.addTest/addTests(testnames)
      runn = unittest.TextTestRunner(verbosity=2)
      runn.run(suite)

      if __name__ == '__main__':
      suite = unittest.TestSuite()
      suite.addTest(sui.pa(Test_ap)) #支持加入对象是一个套件,以实现二次封装
      runn = unittest.TextTestRunner(verbosity=2)
      runn.run(suite)

  • TextTestRunner()类:unittest中的类;用来执行suit,控制测试case的执行,执行生成的是text的报告;如果是需要生成htmlt报告,则使用htmltestrunner;
  • 执行顺序:默认按case名称顺序来确认执行顺序,也可手动定制顺序,各suit来确定执行顺序;
  • 环境/前置/后置处理:使用unittest自带的方法,setUp/setDown,setUpClass setDownClass,其中前两个每个case执行前后都会分别执行前置后置处理;后两个在套件执行前后,分别执行签字和后置处理,且仅执行一次;
  • 断言:unittest提供了个钟断言方法,如下图:
    alt_text
  • 跳过某些测试case:可以使用unittest的skip装饰器,其中skip装饰器主要有3种;(@unittest.skip(reason)/@unittest.skipIf(condition,reason)/@unittest.skipUnless(condition,reason)/即在满足condition条件下跳过该用例,reason用于描述跳过的原因)

参考:unitest使用详解

欢迎关注我的其它发布渠道