智一面的面试题提供python的测试题
使用地址:http://www.gtalent.cn/exam/interview?token=99ef9b1b81c34b4e0514325e9bd3be54

四、TestLoader用法
我们发现使用 addTests() 与使用 addTest() 加载测试用例都太过麻烦,那么我们可以使用测试加载器进行测试用例的加载。

4.1 使用discover()方法加载测试用例
我们使用TestLoader 类中提供的discover()方法。 discover(start_dir,pattern='test*.py',top_level_dir= None)该方法可以找到指定目录下所有测试模块,并可递归查到子目录下的测试模块,只有匹配到文件名时才加载
start_dir:要测试的模块名或测试用例目录
pattern=‘test*.py’:表示用例文件名的匹配原则。此处匹配以“test”开头的.py 类型的文件,* 表示任意多个字符
top_level_dir= None:测试模块的顶层目录,如果没有顶层目录,默认为None

import os
import unittest

class StudyUnittest(unittest.TestCase):

    def test01_case(self):
        print("test01_case")

    def test02_case(self):
        print("test02_case")

    def test03_case(self):
        print("test03_case")

if __name__ == '__main__':
    suite = unittest.TestSuite()
    testcases = unittest.defaultTestLoader.discover(
        start_dir=os.getcwd(),  # 目录:os.getcwd()当前目录路径
        pattern='*.py'          # 文件: 所有以 .py 结尾的文件
    )
    suite.addTests( testcases)    # 加载测试用例集
    unittest.main(defaultTest='suite')


测试结果:


4.1 unittest.TestLoader提供的方法
除了上述示例中的discover()方法,TestLoader还提供了其他方法,下面将列出一部分内容仅供参考。

参考:https://docs.python.org/zh-cn/3/library/unittest.html?highlight=unittest#loading-and-running-tests
TestLoader类用于从类和模块创建测试套件。通常,不需要创建该类的实例;unittest模块提供了一个可以作为unittest. defaulttestloader共享的实例。但是,使用子类或实例允许自定义一些可配置属性。

loadTestsFromTestCase(testCaseClass)
返回由TestCase派生的testCaseClass中包含的所有测试用例的套件。

将为每个由getTestCaseNames()命名的方法创建一个测试用例实例。 默认情况下,这些是以test开头的方法名称。 如果getTestCaseNames()不返回任何方法,但实现了runTest()方法,则将为该方法创建一个测试用例。

loadTestsFromModule(module, pattern=None)
返回给定模块中包含的所有测试用例的套件。 此方法在模块中搜索从TestCase派生的类,并为为该类定义的每个测试方法创建该类的实例。
loadTestsFromName(name, module=None)
给定一个字符串说明符,返回所有测试用例的套件。

指定者名称是“点名”,可以解析为模块,测试用例类,测试用例类中的测试方法,TestSuite实例或返回TestCase或TestSuite实例的可调用对象。 这些检查按照此处列出的顺序进行; 也就是说,将在可能的测试用例类上的方法选择为“测试用例类内的测试方法”,而不是“可调用对象”。

getTestCaseNames(testCaseClass)
返回在testCaseClass中找到的方法名称的排序序列; 这应该是TestCase的子类。
discover(start_dir, pattern=‘test*.py’, top_level_dir=None)
通过从指定的起始目录递归到子目录中,找到所有测试模块,然后返回包含它们的TestSuite对象。 仅加载与模式匹配的测试文件。 (使用外壳样式模式匹配。)仅加载可导入的模块名称(即有效的Python标识符)。
————————————————
我们的python技术交流群:941108876
智一面的面试题提供python的测试题
http://www.gtalent.cn/exam/interview?token=99ef9b1b81c34b4e0514325e9bd3be54