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

pythonserver side programmingprogramming更新于 2025/10/23 10:20:17

在本教程中,我们将学习使用内置模块 unittest 进行 单元测试。测试在软件开发中起着重要作用。在投入生产之前,您将了解问题所在。

我们将使用内置模块 unittest 学习 Python 测试的基础知识。让我们开始本教程吧。

什么是单元测试?

以登录系统为例。登录表单中的每个字段都是一个单元/组件。测试这些单元/组件的功能称为单元测试

示例

让我们看看 unittest 框架的基本结构。

# 导入 unittest 模块
import unittest
# unittest 将测试所有名称以 'test' 开头的方法
class SampleTest(unittest.TestCase):
   # 返回 True 或 False
   def test(self):
      self.assertTrue(True)
# 运行测试
unittest.main()

输出

如果你运行上述程序,你将得到以下结果。

----------------------------------------------------------------------
Ran 1 test in 0.001s
OK

2.测试字符串方法

现在,我们将使用示例测试用例测试不同的字符串方法。请记住,方法名称必须以 test.

开头

让我们看一下我们将要编写的每种方法的简要介绍。

  • test_string_equality

    • 此方法使用 unittest.TestCase 的 assertEqaul 方法测试两个字符串是否相等。

  • test_string_case

    • 此方法使用 unittest.TestCase 的 assertEqaul 方法测试两个字符串情况是否相等。

  • test_is_string_upper

    • 此方法使用 unittest.TestCase 的 assertTrue 和 assertFalse 方法测试字符串是否为大写。

示例

# 导入 unittest 模块
import unittest
class TestingStringMethods(unittest.TestCase):
   # 字符串相等
   def test_string_equality(self):
      # 如果两个参数相等则成功
      self.assertEqual('ttp' * 5, 'ttpttpttpttptp')
   # 比较两个字符串
   def test_string_case(self):
      # 如果两个参数相等则成功
      self.assertEqual('tutorialspoint'.upper(), 'TUTORIALSPOINT')
   # 检查字符串是否为大写
   def test_is_string_upper(self):
      # 用于检查语句是 True 还是 False
      # **assertTrue** 中的表达式结果必须为 True 才能通过测试用例
      # **assertFalse** 中的表达式结果必须为 False 才能通过测试用例
      self.assertTrue('TUTORIALSPOINT'.isupper())
      self.assertFalse('TUTORIALSpoint'.isupper())
# 运行测试
unittest.main()

输出

如果运行上述代码,则如果所有测试用例都通过,您将获得以下结果。

...
----------------------------------------------------------------------
Ran 3 tests in 0.001s
OK

示例

运行以下程序以查看失败的测试用例输出。

# 导入 unittest 模块
import unittest
class TestingStringMethods(unittest.TestCase):

   # 字符串相等
   def test_string_equality(self):
      # 如果两个参数相等则成功
      self.assertEqual('ttp' * 5, 'ttpttpttpttptp')
   # 比较两个字符串
   def test_string_case(self):
      # 如果两个参数相等则成功
      self.assertEqual('tutorialspoint'.upper(), 'TUTORIALSPOINT')
   # 检查字符串是否为大写
   def test_is_string_upper(self):
      # 用于检查语句是 True 还是 False
      # **assertTrue** 中的表达式结果必须为 True 才能通过测试用例
      # **assertFalse** 中的表达式结果必须为 False 才能通过测试用例
      self.assertTrue('TUTORIALSPOINt'.isupper())
      self.assertFalse('TUTORIALSpoint'.isupper())
# 运行测试
unittest.main()

输出

如果运行上述程序,则会得到以下结果。

======================================================================
FAIL: test_is_string_upper (__main__.TestingStringMethods)
----------------------------------------------------------------------
Traceback (most recent call last):
File "p:/Python Work/Stopwatch/practice.py", line 21, in test_is_string_upper
self.assertTrue('TUTORIALSPOINt'.isupper())
AssertionError: False is not true
----------------------------------------------------------------------
Ran 3 tests in 0.016s
FAILED (failures=1)

即使所有测试用例中有一个测试用例失败,我们也会显示失败消息。

结论

如果您对本教程有任何疑问,请在评论部分中提及。


相关文章


有用资源