python批量执行多个文件中的用例

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,不然不会获取成功。

原文地址:https://www.cnblogs.com/zhenyu1/p/13046861.html