在上一篇中,我们对 unittest
框架进行了介绍,了解了它的基本结构和功能。在本篇教程中,我们将重点讨论如何编写和运行 unittest
测试用例,以及如何使用它们来验证代码的正确性。我们将通过具体案例来进行详细的讲解和示范。
1. 编写测试用例
unittest
框架允许我们通过创建继承自 unittest.TestCase
的类来编写测试用例。下面是一个简单的示例,我们将测试一个计算器类的方法。
示例代码
首先,假设我们有一个简单的计算器类 Calculator
,其实现如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| class Calculator: def add(self, x, y): return x + y
def subtract(self, x, y): return x - y
def multiply(self, x, y): return x * y
def divide(self, x, y): if y == 0: raise ValueError("Cannot divide by zero!") return x / y
|
接下来,我们将为 Calculator
类编写测试用例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
| import unittest from calculator import Calculator
class TestCalculator(unittest.TestCase):
def setUp(self): """在每个测试之前执行""" self.calculator = Calculator()
def test_add(self): """测试加法""" self.assertEqual(self.calculator.add(1, 2), 3) self.assertEqual(self.calculator.add(-1, 1), 0) self.assertEqual(self.calculator.add(-1, -1), -2)
def test_subtract(self): """测试减法""" self.assertEqual(self.calculator.subtract(3, 2), 1) self.assertEqual(self.calculator.subtract(-1, -1), 0)
def test_multiply(self): """测试乘法""" self.assertEqual(self.calculator.multiply(2, 3), 6) self.assertEqual(self.calculator.multiply(-1, 5), -5)
def test_divide(self): """测试除法""" self.assertEqual(self.calculator.divide(6, 2), 3) self.assertEqual(self.calculator.divide(-4, 2), -2) with self.assertRaises(ValueError): self.calculator.divide(1, 0)
if __name__ == '__main__': unittest.main()
|
代码解析
- 我们创建了一个类
TestCalculator
,该类继承自 unittest.TestCase
。
- 在
setUp
方法中,我们初始化了一个 Calculator
实例。该方法在每个测试方法运行之前被调用。
- 每个测试方法以
test_
开头,代表这是一个测试用例。
- 使用
self.assertEqual()
验证预期结果和实际结果是否相等。
- 使用
self.assertRaises()
来测试是否抛出特定的异常。
2. 运行测试
要运行我们编写的测试用例,可以在命令行中执行以下命令:
1
| python -m unittest test_calculator.py
|
如果测试通过,则会显示一条类似于以下的信息:
1 2 3 4 5
| .... ---------------------------------------------------------------------- Ran 4 tests in 0.001s
OK
|
如果有某个测试失败,输出将显示哪些测试失败了,及其原因。
3. 测试结果分析
测试的输出信息是非常重要的,它帮助我们快速定位问题。如果某一个测试的结果不符合预期,unittest
会打印出实际结果与预期结果的对比信息,这样我们就可以清楚地看到哪里出了问题。
4. 小结
在本篇教程中,我们学习了如何使用 unittest
框架来编写和运行测试用例。通过具体的案例,我们了解了如何使用 unittest
提供的断言和异常处理功能来验证代码的行为。
在下一篇教程中,我们将深入探讨 unittest
中的测试用例和测试套件的概念,带你进一步掌握如何组织和管理测试,提高测试的灵活性和可维护性。
希望你对这个章节的内容有所收获!如果你有任何问题或需要进一步的示范,请随时提问。