Python中的Unittest框架

  Unittest

  1.环境

  Unittest为Python内嵌的测试框架,不需要特殊配置,仅需要在File---settings---Tools----Python Intergrated Tools下配置框架为Unittest

  2.编写规范

  需要导入 import unittest

  测试类必须继承unittest.TestCase

  测试方法以 test_开头

  模块和类名没有要求

  3.Unittest介绍

  import unittest

  def add(x, y):

  return x + y

  def sub(x,y):

  return x - y

  class UnittestDemo(unittest.TestCase):

  def setUp(self):

  print("I an setup")

  def test_add(self):

  print("my first unit test demo----add")

  self.assertEqual(add(10,1),11,"assert equal")

  def test_sub(self):

  print("my first unit test demo----sub")

  self.assertEqual(sub(10, 1), 9, "assert equal2")

  @unittest.skip("i don't want to run this case.")

  def test_sub1(self):

  print("my first unit test demo----sub1")

  self.assertEqual(sub(10, 1), 9, "assert equal3")

  def tearDown(self):

  print("I an tearDown")

  setUp及TearDown

  方法级别的,类里面的每个方法调用一次

  def setUp(self):

  print("I an setup")

  setUpClass及tearDownClass

  类级别的,类里面的所有方法仅执行一次

  @classmethod

  def setUpClass(cls):

  print("I an setUpClass")

  setUpModule,tearDownModule

  模块级别的,执行模块里面类中的所有方法仅执行一次

  4.Unittest使用

  import unittest

  from unittest_task import UnittestDemo

  from HTMLTestRunner import HTMLTestRunner

  suite=unittest.TestSuite()#创建用例集合

  tests = [UnittestDemo("test_add"), UnittestDemo("test_sub"),UnittestDemo("test_sub1")]

  suite.addTests(tests)

  with open('HTMLReport.html', 'wb') as fi:

  runner = HTMLTestRunner(stream=fi,

  title = 'MathFunc Test Report',

  description='generated by HTMLTestRunner.',

  verbosity=2

  )

  runner.run(suite)

  TestCase

  多个测试用例集合在一起,就是TestSuite

  TestSuite 无锡看妇科的医院 http://www.ytsgfk120.com/

  多个测试用例集合在一起,就是TestSuite

  TestLoader

  用来加载TestCase到TestSuite中的

  TestRunner

  执行测试用例的,测试的结果会保存到TestResult实例中,包括运行了多少测试用例,成功了多少,失败了多少等信息

  skip装饰器

  跳过某个用例不执行

  @unittest.skip("i don't want to run this case.")

  无条件跳过

  unittest.skip(reason)

  当condition为True时跳过

  unittest.skipIf(condition, reason)

  当condition为False时跳过

  unittest.skipUnless(condition, reason)

  self.skipTest('do not run this.')

  5.Unittest生成报告

  5.1 Unittest生成txt格式报告

  if __name__ == '__main__':

  suite = unittest.TestSuite()

  tests = [TestMathFunc("test_add"), TestMathFunc("test_minus"), TestMathFunc("test_divide")]

  suite.addTests(tests)

  with open('UnittestTextReport.txt', 'a') as f:

  runner = unittest.TextTestRunner(stream=f, verbosity=2)

  runner.run(suite)

  运行该文件,就会发现目录下生成了’UnittestTextReport.txt,所有的执行报告均输出到了此文件中。

  verbosity参数可以控制执行结果的输出,0 是简单报告、1 是一般报告、2 是详细报告

  5.2 Unittest生成html格式报告

  with open('HTMLReport.html', 'wb') as fi:

  runner = HTMLTestRunner(stream=fi,

  title = 'MathFunc Test Report',

  description='generated by HTMLTestRunner.',

  verbosity=2

  )

  runner.run(suite)

  输出测试报告为HTML格式,unittest中htmltestrunner导出测试报告,可以修改htmltestrunner中的测试代码


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/69945560/viewspace-2654412/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/69945560/viewspace-2654412/

### Python 中 `unittest` 测试框架概述 `unittest` 是 Python 标准库中的一个单元测试框架,旨在帮助开发者通过编写和运行测试用例来验证代码的功能正确性[^1]。 #### 基本结构与使用方法 为了利用 `unittest` 进行有效的单元测试,通常遵循以下几个方面: - **导入模块**:首先需要从标准库中导入 `unittest` 模块。 - **创建自定义测试类**:该类应当继承自 `unittest.TestCase` 类。这允许访问一系列断言方法以及其他辅助函数,从而简化了测试逻辑的实现过程。 - **定义测试方法**:每一个单独的方法代表了一个具体的测试场景;按照惯例,这些方法的名字应该以字符串 `"test"` 开头以便被自动识别为可执行的测试案例。 下面给出一段简单的例子展示如何构建基本的测试环境并添加两个不同的测试方法: ```python import unittest class TestDemo(unittest.TestCase): def test_method1(self): """这是一个简单的打印语句作为第一个测试方法""" print("测试方法1") def test_method2(self): """这是另一个带有不同输出信息的测试方法""" print("测试方法2") if __name__ == '__main__': unittest.main() ``` 这段代码展示了最基础的应用方式[^2]。 #### 高级特性——指定执行特定测试用例 除了上述常规操作外,有时可能只希望针对某些特定部分做更细致入微地考察而非全部一起跑一遍。此时可以借助命令行参数灵活控制要加载哪些组件参与进来: - 或者精确到某一层级下的具体类别乃至单个成员级别; - 对于较新版本 (Python 3+) 的解释器而言甚至还能够直接依据文件系统的相对位置来进行定位。 例如,在终端里输入如下指令即可完成对应的任务[^3]: ```bash # 执行名为 'test_module' 和 'test_module2' 的模块内所有的测试用例 python -m unittest test_module1 test_module2 # 只运行来自 'test_module' 文件里的 'TestClass' python -m unittest test_module.TestClass # 更进一步聚焦至 'TestClass' 下面叫作 'test_method' 的那个实例化对象身上 python -m unittest test_module.TestClass.test_method # 如果知道确切的位置,则可以直接提供完整的路径名给它(适用于 Python 3) python -m unittest tests/test_something.py ``` #### 关键概念之测试夹具(Fixtures) 最后值得一提的是,“测试夹具”这一机制对于提高效率同样至关重要。它们提供了设置(`setUp`)以及清理(`tearDown`)工作区的能力,使得每次迭代之间都能保持干净独立的状态不受干扰。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值