在python中使用单元测试unittest方式

作者:

文章目录
  • 在我们开始冒险之前,先来思考一下为什么单元测试如此重要。 嗯,首先,它们让我们的代码更可靠,保证了我们的函数和方法按照预期运行。而且,单元测试还是代码质量的守护者,一旦引入新的功能或者修复一个Bug,只需运行测试,就能够确保不会对现有的功能产生负面影响。
  • 在我们的冒险开始之前,确保你已经准备好了最重要的武器:Python和unittest模块。 当然,你也可以选择其他测试框架,但unittest是Python内建的,简单而有效。 # unitest_example1.py import unittest class MyTestCase(unittest.TestCase): def test_hello_world(self): result = “Hello, World!” self.assertEqual(result, “Hello, World!”)
  • 现在,让我们看看这个测试是如何运作的。 简单的测试函数,通过 assertEqual 断言我们的结果是否和期望一致。运行测试: python -m unittest unittest_example1.py
  • 你听到了吗?那是代码在默默地说:“我没有Bug!” 这种感觉,就像是踏入夏日冰淇淋店的凉意,清新又令人愉悦。
  • 单元测试的美妙之处在于,一旦你开始,你就会迷上它。不断扩展你的测试套件,覆盖更多的代码路径。尝试参数化测试,用更少的代码覆盖更多的场景。 注意:parameterized.expand 并不是 unittest 模块中的一部分,它实际上来自于 parameterized 模块,该模块并不是 Python 标准库的一部分。 为了使用 parameterized.expand,您需要安装 parameterized 模块。 pip install parameterized #!/usr/bin/env python # coding=utf-8 # @Time : 2024/1/31 15:40 # unittest_examples2.py import unittest from parameterized import parameterized def add_numbers(a, b): return a + b class AdvancedTestCase(unittest.TestCase): @parameterized.expand([ (“case1”, 1, 2, 3), (“case2”, -1, 2, 1), (“case3”, 0, 0, 0), (“case4”, 0, 0, 2), ]) def test_addition(self, name, a, b, expected): result = add_numbers(a, b) self.assertEqual(result, expected) if __name__ == ‘__main__’: unittest.main() # python -m unittest unittest_examples2.py # python3 -m unittest unittest_examples2.py 我特意加了一个错误的case4,运行代码: python3 -m unittest unitest_example2.py
  • 在我们的技术冒险中,我们发现了单元测试的美妙之处。它不仅保护了我们的代码,还让我们充满信心地迎接新的挑战。
  • 完整代码: #!/usr/bin/env python # unitest_example1.py import unittest class MyTestCase(unittest.TestCase): def setUp(self): # 在测试前的准备工作 self.data = [1, 2, 3] def test_something(self): # 测试代码 result = 1 + 1 # 使用 assert 断言检查结果是否等于 2 self.assertEqual(result, 2) # 使用 assert 断言检查列表中是否包含特定元素 self.assertIn(2, self.data) # 使用 assert 断言检查条件是否为真 self.assertTrue(result == 2) # 使用 assert 断言检查条件是否为假 self.assertFalse(result != 2) # 使用 assert 断言检查两个值是否不相等 self.assertNotEqual(result, 3) # 使用 assert 断言检查某个值是否为 None self.assertIsNone(None) # 使用 assert 断言检查某个值是否不为 None self.assertIsNotNone(result) # 使用 assert 断言检查字符串是否以特定前缀开头 self.assertTrue(“hello”.startswith(“he”)) def tearDown(self): # 在测试后的清理工作 del self.data def run(): loader = unittest.TestLoader() suite = loader.loadTestsFromTestCase(MyTestCase) if __name__ == “__main__”: unittest.main() 以上为个人经验,希望能给大家一个参考,也希望大家多多支持风君子博客。 您可能感兴趣的文章: Python单元测试unittest模块使用终极指南 python单元测试框架unittest基本用法案例 python中使用 unittest.TestCase单元测试的用例详解 Python接口自动化浅析unittest单元测试原理 python unittest单元测试的步骤分析 Python单元测试及unittest框架用法实例解析 Python unittest单元测试openpyxl实现过程解析
  • 目录
    • 为什么单元测试如此重要?
    • 第一步:准备好你的工具
    • 第二步:让测试跑起来!
    • 第三步:享受成功的喜悦
    • 第四步:扩展你的冒险
    • 结语:单元测试是一场愉快的冒险!
    • 附录

    在我们开始冒险之前,先来思考一下为什么单元测试如此重要。

    嗯,首先,它们让我们的代码更可靠,保证了我们的函数和方法按照预期运行。而且,单元测试还是代码质量的守护者,一旦引入新的功能或者修复一个Bug,只需运行测试,就能够确保不会对现有的功能产生负面影响。

    在我们的冒险开始之前,确保你已经准备好了最重要的武器:Python和unittest模块。

    当然,你也可以选择其他测试框架,但unittest是Python内建的,简单而有效。

    # unitest_example1.py
    
    import unittest
    
    class MyTestCase(unittest.TestCase):
        def test_hello_world(self):
            result = "Hello, World!"
            self.assertEqual(result, "Hello, World!")
    

    现在,让我们看看这个测试是如何运作的。

    简单的测试函数,通过 assertEqual 断言我们的结果是否和期望一致。运行测试:

    python -m unittest unittest_example1.py
    

    你听到了吗?那是代码在默默地说:“我没有Bug!” 这种感觉,就像是踏入夏日冰淇淋店的凉意,清新又令人愉悦。

    单元测试的美妙之处在于,一旦你开始,你就会迷上它。不断扩展你的测试套件,覆盖更多的代码路径。尝试参数化测试,用更少的代码覆盖更多的场景。

    注意:parameterized.expand 并不是 unittest 模块中的一部分,它实际上来自于 parameterized 模块,该模块并不是 Python 标准库的一部分。

    为了使用 parameterized.expand,您需要安装 parameterized 模块。

    pip install parameterized
    #!/usr/bin/env python
    # coding=utf-8
    # @Time    : 2024/1/31 15:40
    
    # unittest_examples2.py
    
    import unittest
    
    from parameterized import parameterized
    
    def add_numbers(a, b):
        return a + b
    
    class AdvancedTestCase(unittest.TestCase):
        @parameterized.expand([
            ("case1", 1, 2, 3),
            ("case2", -1, 2, 1),
            ("case3", 0, 0, 0),
            ("case4", 0, 0, 2),
        ])
        def test_addition(self, name, a, b, expected):
            result = add_numbers(a, b)
            self.assertEqual(result, expected)
    
    
    if __name__ == '__main__':
        unittest.main()
    
    # python -m unittest unittest_examples2.py
    # python3 -m unittest unittest_examples2.py

    我特意加了一个错误的case4,运行代码:

    python3 -m unittest unitest_example2.py

    在我们的技术冒险中,我们发现了单元测试的美妙之处。它不仅保护了我们的代码,还让我们充满信心地迎接新的挑战。

    完整代码:

    #!/usr/bin/env python
    # unitest_example1.py
    
    import unittest
    
    
    class MyTestCase(unittest.TestCase):
        def setUp(self):
            # 在测试前的准备工作
            self.data = [1, 2, 3]
    
        def test_something(self):
            # 测试代码
            result = 1 + 1
    
            # 使用 assert 断言检查结果是否等于 2
            self.assertEqual(result, 2)
    
            # 使用 assert 断言检查列表中是否包含特定元素
            self.assertIn(2, self.data)
    
            # 使用 assert 断言检查条件是否为真
            self.assertTrue(result == 2)
    
            # 使用 assert 断言检查条件是否为假
            self.assertFalse(result != 2)
    
            # 使用 assert 断言检查两个值是否不相等
            self.assertNotEqual(result, 3)
    
            # 使用 assert 断言检查某个值是否为 None
            self.assertIsNone(None)
    
            # 使用 assert 断言检查某个值是否不为 None
            self.assertIsNotNone(result)
    
            # 使用 assert 断言检查字符串是否以特定前缀开头
            self.assertTrue("hello".startswith("he"))
    
        def tearDown(self):
            # 在测试后的清理工作
            del self.data
    
    
    def run():
        loader = unittest.TestLoader()
        suite = loader.loadTestsFromTestCase(MyTestCase)
    
    
    if __name__ == "__main__":
        unittest.main()
    

    以上为个人经验,希望能给大家一个参考,也希望大家多多支持风君子博客。

    您可能感兴趣的文章:

    • Python单元测试unittest模块使用终极指南
    • python单元测试框架unittest基本用法案例
    • python中使用 unittest.TestCase单元测试的用例详解
    • Python接口自动化浅析unittest单元测试原理
    • python unittest单元测试的步骤分析
    • Python单元测试及unittest框架用法实例解析
    • Python unittest单元测试openpyxl实现过程解析

    站内搜索