在unittest测试框架简介中,我们已经了解了unittest框架的基本用法和测试类的创建

现在,将以其中的示例为例,介绍如何生成一份测试用例报告

将unittest测试框架简介代码拿过来直接使用

# 引入unittest模块
import unittest


# 创建测试类,继承unittest.TestCase
class TestCaseClass(unittest.TestCase):

    #   测试方法,每执行一次test的测试方法就会执行一次
    def setUp(self) -> None:
        print("setUp方法")

    def tearDown(self) -> None:
        print("tearDown方法")

    #   测试类,以@classmethod修饰测试类,且在过程中仅执行一次
    @classmethod
    def setUpClass(cls) -> None:
        print("setUpClass每个类执行一次")

    @classmethod
    def tearDownClass(cls) -> None:
        print("tearDownClass每个类执行一次")

    def test_method1(self):
        a = 1
        b = 2
        c = a + b
        # 断言 判断c和3是否相同
        self.assertEqual(c, 3)

    def test_method2(self):
        a = 2
        b = 3
        c = a * b
        #断言 判断c和6是否相同
        self.assertEqual(c, 6)


if __name__ == '__main__':
    # 执行所有的以test为开头的测试用例
    unittest.main()

main方法的其他加载方式

main的基本使用方式

  • 当测试模块作为独立的可执行脚本被运行时,执行unittest.main()函数来加载并执行测试用例
if __name__ == '__main__':
    # 执行所有的以test为开头的测试用例
    unittest.main()
  • unittest.main()函数还支持一些参数,可以用来控制测试的行为

testsuit方式

测试套件(TestSuite)是一个集合,集合将多个测试用例组合存放在一起,以便一次性执行测试用例

创建测试套件的方式有:

  • 手动添加测试用例:使用addTest()方法将测试用例添加到套件中
    # 创建一个名为testsuit的测试套件
    testsuit= unittest.TestSuite()    
    
    # 手动添加测试用例
    # TestCaseClass为class类名;test_method1是测试类中的方法
    testsuit.addTest(TestCaseClass('test_method1')) 
    testsuit.addTest(TestCaseClass('test_method2'))  
    
    # 执行测试套件
    runner = unittest.TextTestRunner()
    runner.run(testsuit)    # 使用run方法运行测试套件
  • 通过加载器加载测试用例:可以使用TestLoader的加载方法,如loadTestsFromTestCase()、loadTestsFromName()和loadTestsFromModule(),来加载测试用例并自动添加到测试套件中

testLoader加载方式

TestLoader是unittest框架中的加载器,它提供了几个方法来查找测试用例并批量添加到测试套件中:

  • loadTestsFromTestCase: 根据传入的测试类,查找并加载该测试类中的所有测试用例。

  • loadTestsFromName: 根据传入的名称,查找并加载对应的测试用例。可以通过测试用例的名称来指定要加载的具体测试用例。

  • loadTestsFromModule: 根据传入的模块名,加载该模块中的所有测试用例。它会自动查找并加载模块中所有以 "test" 开头的函数或方法作为测试用例。

    # 创建一个名为testsuit的测试套件
    testsuit= unittest.TestSuite()    
    
    # 自动添加添加测试用例,通过loadTestsFromTestCase加载测试用例到测试套件中
    # TestCaseClass为class类名
    testsuit.addTests(unittest.TestLoader().loadTestsFromTestCase(TestCaseClass))

    # 执行测试套件
    runner = unittest.TextTestRunner()
    runner.run(testsuit)    # 使用run方法运行测试套件

discover 路径加载

在unittest框架中,可以使用unittest.TestLoader中的discover()方法来通过文件路径加载测试用例

discover()方法会自动递归地查找指定路径下的.py测试模块,并加载其中的测试用例

# 创建一个名为testsuit的测试套件
testsuit= unittest.TestSuite()

# 使用 discover() 方法加载指定路径下的测试用例
# start_dir指定了测试模块所在的路径,可以是相对路径或绝对路径
# pattern用于匹配测试模块的文件名,可以使用通配符
testsuit.addTests(unittest.defaultTestLoader.discover(start_dir='path/to/tests', pattern='test*.py'))

# 执行测试套件
runner = unittest.TextTestRunner()
runner.run(testsuit)

作者简介:

程序员山茶,一个工作5年,并坚持探索测试之路的测试开发工程师。曾混迹于互联网大厂、IOTA行业领航企业、安全行业、大数据行业领航企业,欢迎和我一起沟通交流。公众号【程序员山茶】


欢迎关注我,  和我一起探索测试之路,终身成长

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐