关于Python单元测试模块Unitest

单元测试

白盒测试和黑盒测试

  • 白盒测试:是通过程序的源代码进行测试而不使用用户界面。这种类型的测试需要从代码句法发现内部代码在算法,溢出,路径,条件等等中的缺点或者错误,进而加以修正。黑盒测试:又被称为功能测试、数据驱动测试或基于规格说明的测试,是通过使用整个软件或某种软件功能来严格地测试, 而并没有通过检查程序的源代码或者很清楚地了解该软件的源代码程序具体是怎样设计的。测试人员通过输入他们的数据然后看输出的结果从而了解软件怎样工作

Python的单元测试模块 UnitTest

  • test case , test suit, test runner, test fixture

测试用例

  • 继承 unittest.TestCase

  • 内部定义以test_开头的方法,每个test case 都是单独运行,如果一个class中有多个 test_XXX 那么最后在load到suit时也会有多个测试

  • 覆盖度越高越准确

测试运行后的输出

  • 第一行给出每个用力执行后的标识,成功时 . ,出错时 E,失败时 F, 跳过时 S

  • 在unittest.main() 中可以添加 verbosity 参数,控制最后报告的详细程度,默认时1,0表示不输出每一个用例的执行结果,2 输出详细的执行结果

使用test suite

  ​
  if __name__ == '__main__':
      suite = unittest.TestSuite()
      # 定义测试的内容列表
      tests = [TestMathFunc('test_add'), TestMathFunc('test_minus')]
      # 添加到测试中,addTest 可以添加单个
      suite.addTests(tests)
      # 定义 runner 执行测试
      runner = unittest.TextTestRunner(verbosity=2)
      runner.run(suite)

测试环境准备

setUp和tearDown

  • 在每个测试用例开始和结束时执行的方法,用于测试环境的准备,清理环境

setUpClass和tearDownClass

  • 在所有的 case 开始之前准备一次环境,所有的 case 结束之后再清理环境

  ​
  class TestModel(unittest.TestCase):
      
      @classmethod
      def setUpClass(cls):
          print('准备环境')
          
      @classmethod
      def tearDownClass(cls):
          print("清理环境")

跳过某个case

  • 使用 装饰器装饰方法, @unittest.skip("跳过此方法")

  • skip装饰器一共有三个 unittest.skip(reason)unittest.skipIf(condition, reason)unittest.skipUnless(condition, reason)skip无条件跳过,skipIf当condition为True时跳过,skipUnless当condition为False时跳过。

输出 HTML 报告

首先下载官方的HTMLTestRunnerhttp://tungwaiyip.info/software/HTMLTestRunner.html

  ​
  import unittest
  from test_model import TestModel
  from HTMLTestRunner import HTMLTestRunner
  ​
  ​
  if __name__ == '__main__':
      suite = unittest.TestSuite()
      suite.addtests(unittest.TestLoader().loadTestsFromTestCase(TestModel))
      
      with open("test.html", 'w') as f:
          runner = HTMLTestRunner(stream=f, title='Hell test', description="discription", verbosity=2)
          runner.run(suite)

猜你喜欢

转载自blog.csdn.net/zhang_Ming_lu/article/details/82319244
今日推荐