文章内容
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
文件中的所有测试,并显示测试结果。
请注意,单元测试应该涵盖不同的情况,包括边界情况和错误情况。此外,还可以使用 setUp
和 tearDown
方法在测试运行前后执行一些设置和清理工作。
测试的初始化
如果我们需要在测试的时候需要初始化一些环境变量,在 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_1
和 test_method_2
) 可以使用已初始化的对象进行测试。这确保了测试方法之间的独立性,因为每个测试方法都会在相同的条件下运行。
请注意,setUp
方法的名称是固定的,它是 unittest
框架约定的。同样,如果需要在每个测试方法运行后执行一些清理工作,可以使用 tearDown
方法。
其它相关推荐:
评论列表