使用 Unittest 在 Python 程序中进行单元测试

pythonserver side programmingprogramming更新于 2025/12/27 1:48:17

在本文中,我们将借助 Python 3.x 或更早版本中提供的 unittest 模块了解软件测试的基础知识。它允许自动化、共享测试的设置和退出代码以及每个框架的独立测试。

在单元测试中,我们使用各种面向对象的概念。我们将在这里讨论一些主要使用的概念。

  • Testcase − 它是根据给定的一组输入响应特定的基类。我们使用 unittest 的基类,即"TestCase"来实现此操作。

  • Testsuite − 它用于将测试用例组合在一起并同时执行它们。

  • Testrunner − 它遵循基于结果的任务执行。它涉及执行任务后显示结果。

  • Testfixture − 它作为相关环境中测试用例的基线。

现在让我们通过一个基本示例来了解单元测试的工作原理。

示例

import unittest
class TestStringMethods(unittest.TestCase):
   def test_upper(self):
      self.assertEqual('TUTOR'.lower(), 'tutor')
   def test_islower(self):
      self.assertTrue('tutor'.islower())
      self.assertFalse('Tutor'.islower())
if __name__ == '__main__':
   unittest.main()

输出

...
-------------------------------
Ran 2 tests in 0.000s
OK

这里我们以单继承的形式扩展单元测试类。这里我们使用了内置方法,如 assertEqual() 、 assertTrue() 和 assertFalse() 。

assertEqual() 用于验证/比较输出与结果。

assertTrue() 用于验证给定的条件是否为 True。


assertFalse() 用于验证给定的条件是否为 False。

上述代码的输出可以有三种形式:

OK - 这表示生成的所有测试都已成功执行

FAIL - 这表示任一测试用例失败并引发 AssertionError 异常。

ERROR -这表明测试引发了异常/错误。

我们可以使用装饰器@unittest.skip(<reason>)

示例

import unittest
class TestString(unittest.TestCase):
   @unittest.skip(“check skipped tests”)
   def test_upper(self):
      self.assertEqual('TUTOR'.lower(), 'tutor')
   def test_islower(self):
      self.assertTrue('tutor'.islower())
      self.assertFalse('Tutor'.islower())
if __name__ == '__main__':
   unittest.main()

输出

...
------------------------------------------
Ran 2 tests in 0.000s
OK (skipped=2)

结论

在本文中,我们了解了使用 Python 3.x 或更早版本中的 Unittest 模块进行 Python 单元测试。


相关文章


有用资源