📜  测试记录 python (1)

📅  最后修改于: 2023-12-03 15:11:06.126000             🧑  作者: Mango

测试记录 Python

在日常开发中,测试是极为重要的一个环节。通过测试,可以尽早发现代码中的错误,提高代码质量和稳定性。本文将介绍如何使用 Python 进行测试,并记录测试结果。

Python 测试框架

Python 有多种测试框架可供选择,本文将介绍最常用的三种框架:

  • unittest:Python 自带的单元测试框架。
  • pytest:功能更丰富的第三方测试框架。
  • doctest:可以通过在函数注释中书写测试用例进行测试的框架。

在本文的后续部分,我们将主要使用 unittest 进行测试。

编写测试用例

为了进行测试,需要编写测试用例。测试用例应当尽可能全面,覆盖代码的各个分支及边界情况。

下面是一个示例,用于测试一个加法函数:

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

对应的测试用例可以这样编写:

import unittest

class TestAdd(unittest.TestCase):
    def test_add(self):
        self.assertEqual(add(1, 2), 3)
        self.assertEqual(add(0, 0), 0)
        self.assertEqual(add(-1, 1), 0)

以上测试用例共包含了三个测试点,分别测试了加法函数的正常情况以及两个边界情况。

运行测试

在编写测试用例之后,需要运行测试来检查代码实现是否正确。

在终端中运行以下命令,可以运行该代码中的所有测试用例:

python -m unittest test_module.py

其中 test_module.py 为包含测试用例的文件名。

记录测试结果

运行测试后,我们需要记录测试结果。这可以通过 Python 内置的 unittest 模块实现。

在测试用例中添加 setUp()tearDown() 方法,可以在测试前和测试后分别执行相应操作。例如,我们可以在 setUp() 方法中连接数据库,在 tearDown() 方法中关闭数据库连接。

class TestAdd(unittest.TestCase):
    def setUp(self):
        self.db = connect_db()
    
    def tearDown(self):
        self.db.close()
        
    def test_add(self):
        ...

在测试执行完后,我们需要将测试结果记录写入文件以便后续分析。这可以通过 unittest 的 TestResult 对象实现。

class TestAdd(unittest.TestCase):
    ...
    
    @classmethod
    def tearDownClass(cls):
        with open("test_result.txt", "w") as f:
            runner = unittest.TextTestRunner(stream=f)
            result = runner.run(unittest.makeSuite(cls))

以上代码中,tearDownClass() 方法会在所有测试用例执行完毕后执行,并将测试结果写入文件。

小结

在 Python 中,使用 unittest 进行测试非常方便。通过编写全面的测试用例,我们可以及早发现代码中的问题,并通过记录测试结果对代码进行分析和改进。