文章内容

2024/2/1 23:47:15,作 者: 黄兵

Python 单元测试示例

在Python中,编写单元测试通常使用内置的 unittest 模块。以下是一个简单的示例来演示如何编写和运行单元测试:

假设有一个简单的函数,对两个数字进行相加:

# adder.py

def add_numbers(a, b):
    return a + b

现在,我们将编写一个单元测试来测试这个函数:

# test_adder.py

import unittest
from adder import add_numbers

class TestAdder(unittest.TestCase):

    def test_add_numbers(self):
        result = add_numbers(2, 3)
        self.assertEqual(result, 5, "Expected sum of 2 and 3 to be 5")

if __name__ == '__main__':
    unittest.main()

在这个例子中,我们创建了一个测试类 TestAdder,其中包含一个测试方法 test_add_numbers。测试方法使用 self.assertEqual 来断言 add_numbers(2, 3) 的结果是否等于预期的值。

要运行测试,可以在命令行中执行以下命令:

python -m unittest test_adder.py

这将运行 test_adder.py 文件中的所有测试,并显示测试结果。

请注意,单元测试应该涵盖不同的情况,包括边界情况和错误情况。此外,还可以使用 setUptearDown 方法在测试运行前后执行一些设置和清理工作。

测试的初始化

如果我们需要在测试的时候需要初始化一些环境变量,unittest 中,您可以使用 setUp 方法在每个测试方法运行之前初始化一些参数。setUp 方法将在每个测试方法执行之前调用,这样可以确保每个测试都从相同的起点开始。

以下是一个示例:

import unittest
from my_module import MyClass

class TestMyClass(unittest.TestCase):

    def setUp(self):
        # 初始化一些参数,创建对象等
        self.my_object = MyClass(initial_value=42)

    def test_method_1(self):
        # 使用已初始化的对象进行测试
        result = self.my_object.method_1()
        self.assertEqual(result, expected_result_1)

    def test_method_2(self):
        # 使用已初始化的对象进行测试
        result = self.my_object.method_2()
        self.assertEqual(result, expected_result_2)

if __name__ == '__main__':
    unittest.main()

在这个例子中,setUp 方法创建了一个 MyClass 的实例并将其存储在 self.my_object 中。测试方法 (test_method_1test_method_2) 可以使用已初始化的对象进行测试。这确保了测试方法之间的独立性,因为每个测试方法都会在相同的条件下运行。

请注意,setUp 方法的名称是固定的,它是 unittest 框架约定的。同样,如果需要在每个测试方法运行后执行一些清理工作,可以使用 tearDown 方法。


其它相关推荐:

1、Python Itertools 模块

2、Python Filter 函数

3、Python Map 函数

4、Python Lambda 函数

5、Python 集合和列表理解

分享到:

发表评论

评论列表