什么是 Python 单元测试?

pythonserver side programmingprogramming

什么是单元测试?

单元测试是一种软件测试,其中测试系统的每个单独组件。单元测试是开发人员的重要实践。它确保软件的每个组件都按预期正常运行。单元测试主要由开发人员在软件开发的编码阶段执行。

单元测试使问题修复变得容易,因为开发人员会知道系统或软件的哪个特定组件存在问题,并且开发人员可以修复该特定单元。

Python 单元测试

python 有一个名为 unittest  的内置包,用于执行单元测试。单元测试使代码具有面向未来性,因为开发人员可以预测代码可能失败的情况,并针对这些情况对代码进行测试。尽管我们可能会错过某些情况,但大多数情况仍将得到解决,并且代码将针对这些情况进行测试。

可以通过在 Python 程序中导入此模块来使用 unittest 模块,如下所示。

import unittest

示例

假设我们有一个简单的函数,它计算正方形的面积。将此文件保存为名称"area.py"。

def area(a):
   return (a+a)

现在,让我们为上述函数编写单元测试代码,这将让我们知道我们的函数是否给出了预期的输出。让单元测试代码文件以名称"unit_test.py"保存。

unit_test.py &mnus;

from area import *
import unittest

class Testarea(unittest.TestCase):
   def test_area(self):
      self.assertAlmostEqual(area(5),25)
      self.assertAlmostEqual(area(3),9)
      self.assertAlmostEqual(area(4),16)

此处,导入了包含要测试的代码的文件。使用 unittest 方法 assertAlmostEqual()。这会使用一些输入调用 area 函数,第二个参数包含该函数要返回的预期输出。如果 area() 返回的输出等于预期输出,则测试通过,否则测试失败。

现在让我们从命令提示符运行 unit_test.py 来检查我们的 area() 代码是否通过了测试。

从命令提示符执行以下命令来运行 unit_test 文件。

python -m unittest unit_test.py

输出

C:\Users\Inderjit Singh\Desktop>python -m unittest unit_test.py
F
======================================================================
FAIL: test_area (unit_test.Testarea)
----------------------------------------------------------------------
Traceback (most recent call last):
   File "C:\Users\Inderjit Singh\Desktop\unit_test.py", line 7, in test_area
      self.assertAlmostEqual(area(5),25)
AssertionError: 10 != 25 within 7 places (15 difference)

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

FAILED (failures=1)

我们的代码未通过单元测试。原因在回溯中给出。第一个函数 self.assertAlmostEqual(area(5),25) 导致我们的代码失败。因为该函数返回 10,但预期输出为 25。

由于这是一个简单的函数,我们知道如何修复它。我们的 area() 代码是错误的。它应该返回 (a*a) 而不是 (a+a)。

让我们修复 area() 代码并重新运行单元测试。

def area(a):
   return (a*a)

重新运行 unit_test.py

C:\Users\Inderjit Singh\Desktop>python -m unittest unit_test.py
.
----------------------------------------------------------------------
Ran 1 test in 0.000s

OK

现在,由于我们已经更正了 area() 中的代码,它以 OK 状态成功运行。这确保我们的代码能够完美地针对 unit_test.py 文件中指定的所有情况运行。

这是一个非常简单的想法,可以让你了解单元测试。unittest 模块中还有各种其他函数可用于开发过程中的单元测试。


相关文章