使用unittest的discover方法发现目录中子文件夹中的case

前言:开始用的时候都是把所有的test.py文件放在一个目录下,虽然对运行没什么影响,但是吧,总是不那么好看,且有时候文件名类似,要找好久,就想能不能再创建子文件夹进行分类一下,那又该如何使用discover方法去拿到所有用例呢?下面分享。

可能有人说可以用pytest框架,可以的,我可以用,但是我还想基于Unittest去解决试试。

第一种方法:

testcase目录

上代码:

注释写的很详细,其逻辑很简单,就是先用os.walk()方法拿到所有的py文件名称,再用判断去除非testcase.py文件,添加进case_list列表,再遍历case_list得到单个文件名,然后用discover中的pattern匹配方式去匹配相应文件名的文件得到单个testcase,就可以拿到所有的用例了。

特别注意一点:要想拿到所有的testcase必须在每个文件夹中有一个__init__.py文件引导,否则无法获取。

# pro_path是工程目录,构造了一个case_pth路径
case_path = os.path.join(pro_path, "testcase")
        suit = unittest.TestSuite()
        case_list = []

        # 使用os.walk方法遍历得到所有文件名称filename的列表集合
        for dirpath, dirname, filename in os.walk(case_path):
            for file in filename:
                # 判断文件以.py结尾且不以__开始,为去除__init.py文件和.pyx后缀的文件
                if file.endswith(".py") and not file.startswith("__"):
                    # print(file)
                    case_list.append(file)

        # 得到有效的用例文件列表后传值给discover方法的pattern匹配方式,可拿到所有testcase
        # 此处注意,要想拿到所有的testcase必须在每个文件夹中有一个__init__.py文件引导,否则无法获取。
        for case in case_list:
            discover = unittest.defaultTestLoader.discover(start_dir=case_path, pattern=case)
            suit.addTest(discover)  

第二种方法:

用一个txt配置文件去记录所有的test.py文件,

上代码:思路我就不讲解了,注释很清晰

caseListFile = os.path.join(pro_path, "caselist")
fb = open(caseListFile)
        # 逐行读取文件名信息
        for value in fb.readlines():
            data = str(value)
            # 过滤空格和#开头注释的文件名
            if data != '' and not data.startswith("#"):
                # 再添加进caseList列表中
                self.caseList.append(data.replace("\n", ""))
        fb.close()
test_suite = unittest.TestSuite()
        # 遍历caseList列表
        for case in self.caseList:
            # 读取的文件名带了user路径,使用split进行分割,[-1]最后一个值
            case_name = case.split("/")[-1]
            print(case_name+".py")
            # 使用discover方法去寻找以case_name开头的文件(txt中并未带.py后缀)
            discover = unittest.defaultTestLoader.discover(self.caseFile, pattern=case_name + '.py', top_level_dir=None)
            suite_module.append(discover)

 

posted @ 2019-04-18 17:38  咸鱼也是有梦想的  阅读(853)  评论(0编辑  收藏  举报