python单元测试框架unittest

发布时间:2022-03-31 09:52:35 人气:107 作者:多测师

  unittest是python单元测试框架,又叫做PyUnit。

  之所以称为框架是它代替开发人员完成了一些调用、IO等与单元测试无直接关系的支撑代码,让开发人员可以专注与测试用例的编写,简化单元测试工作。

  单元测试是一种基本的,由开发人员(而不是测试人员)完成的测试,保证一个程序基本单元的正确性。“单元”的概念我个人理解就类似电子设备中的元器件,一个个元器件(单元)组成了整个电子设备(程序)。而元器件的功能是单一的、确定的,可以在电子设备未完全成型(程序未完全实现)之前对其正确性进行测试(即单元测试)。同时,这些元器件是独立的,可以方便的更换(高内聚,低耦合,可以任意重构——只要满足前面的单元测试)。所以单元测试是测试驱动开发、极限编程、敏捷中的重要概念。

  一个简单的例子:

python单元测试框架unittest

  #FileName: ut_target.py

  class EqualToZero(Exception): pass

  class SplitZero(object):

  def splitzero(self, num):

  if num > 0:

  return "num is bigger than zero"

  elif num < 0:

  return "num is smaller than zero"

  else:

  raise EqualToZero

  #FileName: utest.py

  from ut_target import SplitZero, EqualToZero

  import unittest

  class SzTestCase(unittest.TestCase):

  def setUp(self):

  print "test start"

  def tearDown(self):

  print "test stop"

  def testSzBig(self):

  num = 10

  sz = SplitZero()

  self.assertEqual(sz.splitzero(num),

  "num is bigger than zero")

  def testSzSmall(self):

  num = -10

  sz = SplitZero()

  self.assertEqual(sz.splitzero(num),

  "num is smaller than zero")

  def testSzEqual(self):

  num = 0

  sz = SplitZero()

  self.assertRaises(EqualToZero, sz.splitzero, num)

  if __name__ == "__main__":

  unittest.main()

  执行python utest.py -v

  testSzBig (__main__.SzTestCase) ... test start

  test stop

  ok

  testSzEqual (__main__.SzTestCase) ... test start

  test stop

  ok

  testSzSmall (__main__.SzTestCase) ... test start

  test stop

  ok

  ----------------------------------------------------------------------

  Ran 3 tests in 0.000s

  OK

  unittest基本使用方法

  1.import unittest

  2.定义一个继承自unittest.TestCase的测试用例类

  3.定义setUp和tearDown,在每个测试用例前后做一些辅助工作。

  4.定义测试用例,名字以test开头。

  5.一个测试用例应该只测试一个方面,测试目的和测试内容应很明确。主要是调用assertEqual、assertRaises等断言方法判断程序执行结果和预期值是否相符。

  6.调用unittest.main()启动测试

  7.如果测试未通过,会输出相应的错误提示。如果测试全部通过则不显示任何东西,这时可以添加-v参数显示详细信息。

  以上内容为大家介绍了python单元测试框架unittest,希望对大家有所帮助,如果想要了解更多Python相关知识,请关注多测师。https://www.e70w.com/xwzx/

返回列表
在线客服
联系方式

热线电话

17727591462

上班时间

周一到周五

二维码
线