Python unittest利用discover获取指定目录或多级目录下的测试用例

最近在写接口自动化框架,由python+requests+unittest构建(其他还有些导入模块,这里暂且不说),目前还在搭建当中,整体其框架结构如下:

在编写Common下的RunTools组件(主要封装的是获取测试用例、执行测试、生成测试报告、发送邮件等相关函数) 时,遇到一些坑,在这里进行总结:

1、利用unittest的discover获取指定目录下匹配的相关测试用例

封装函数如下:

class RunTools:
def chooseDirCases(self,casedir,pattern):
    '''
    根据指定目录获取匹配的测试用例
    :param casedir: 测试用例目录路径
    :param pattern: 匹配模式
    :return: 测试用例集
    '''
    discover_cases=unittest.defaultTestLoader.discover(casedirpath,pattern=pattern)
    return discover_cases

实例:

runtools=RunTools()
a=runtools.chooseDirCases('DL_Cases','test*.py')

tips:这种方式是可以获取指定目录下的匹配模式的测试用例,目录的属性可以是dict,也可以是python package

2、利用unittest的discover获取多级目录的所有测试用例

封装函数如下:

class RunTools:
def chooseAllCases(self,pattern):
    '''
    获取TestCases下所有的测试用例
    :param pattern: 匹配模式
    :return: 测试用例集
    '''
    discover_all_cases=unittest.defaultTestLoader.discover(testcase_path,pattern=pattern,top_level_dir=None)   #testcase_path是测试用例的根目录
    return discover_all_cases

实例:

runtools=RunTools()
b=runtools.chooseAllCases('test*.py')

tip:discover是递归匹配文件的,如果设定的目录是测试用例的根目录的话,discover会去匹配每个子目录下的所有用例,匹配成功的用例就加载到discover,但是在这里需要注意一点,存放用例的目录属性必须是python package,必须要有__init__.py,不然不会获取成功。

猜你喜欢

转载自blog.csdn.net/BearStarX/article/details/81303854
今日推荐