Python 单元测试 unittest

unittest 是 Python 标准库中的测试框架。

1. 基本结构

import unittest

class TestMath(unittest.TestCase):
    def test_add(self):
        self.assertEqual(1 + 1, 2)
    
    def test_divide(self):
        self.assertRaises(ZeroDivisionError, lambda: 1/0)

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

2. 常用断言

self.assertEqual(a, b)
self.assertNotEqual(a, b)
self.assertTrue(x)
self.assertFalse(x)
self.assertIsNone(x)
self.assertIsNotNone(x)
self.assertIn(x, list)
self.assertIsInstance(x, type)

3. setUp 和 tearDown

class TestExample(unittest.TestCase):
    def setUp(self):
        self.data = load_test_data()
    
    def tearDown(self):
        clean_up(self.data)

4. 运行测试

python -m unittest
python -m unittest test_module
python -m unittest test_module.TestClass
python -m unittest -v

5. pytest(更推荐)

pip install pytest

# 运行
pytest
pytest -v
pytest -k test_name

测试是保证代码质量的关键。