什么是Python单元测试?
更多Python相关文章,请阅读:Python 教程
什么是单元测试?
单元测试是一种软件测试类型,它对系统的每个单独组件进行测试。单元测试是开发人员的重要实践。它确保软件的每个组件按预期运作。单元测试主要是由开发人员在软件开发的编码阶段执行的。
单元测试使问题的修复变得容易,因为开发人员知道系统或软件中有哪个特定组件存在问题,并且开发人员可以修复特定的组件。
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模块中还有其他各种函数用于单元测试。