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

pythonserver side programmingprogramming更新于 2025/11/20 2:52:17

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

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

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

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

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

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

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

示例

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 单元测试。


相关文章


有用资源