先列出所有的yml文件的路径以及.yml的文件
import yaml import os import re
file_path_list = [] def print_all_file_path(init_file_path, keyword): for cur_dir, sub_dir, included_file in os.walk(init_file_path): if included_file: for file in included_file: if re.search(keyword, file): file_path_list.append(cur_dir + "/" + file) #获取指定目录文件下 后缀为.yml子文件的文件路径 file_list = print_all_file_path("存放yml文件的文件夹路径",".yml")
再遍历出所有的数据,提取指定参数并统计
url_list = [] # 用来存储yml用例中的url for contents_yml in file_path_list: #遍历每个yml用例 path_yml = "%s"%contents_yml f = open(path_yml, ‘r‘, encoding=‘utf-8‘).read() #打开.yml文件 f1 = yaml.safe_load(f) # 转为字典类型 for i in range(2, len(f1)): url = f1[i]["test"]["request"]["url"] #提取其中的一个值 if url not in url_list: #去除重复的url url_list.append(url) #添加到url_list列表中 print(url_list) print(len(url_list))
完整案例:
# encoding: utf-8 import yaml import os import re class CountUrl(object): def __init__(self): self.file_path_list = [] # 用来存储所有的yml文件路径 self.url_list = [] # 用来存储yml用例中的url def print_all_file_path(self,init_file_path, keyword): for cur_dir, sub_dir, included_file in os.walk(init_file_path): if included_file: for file in included_file: if re.search(keyword, file): self.file_path_list.append(cur_dir + "/" + file) def count_testcase_url(self): for contents_yml in self.file_path_list: # 遍历每个yml用例 path_yml = "%s" % contents_yml f = open(path_yml, ‘r‘, encoding=‘utf-8‘).read() # 打开.yml文件 f1 = yaml.safe_load(f) # 转为字典类型 for i in range(2, len(f1)): url = f1[i]["test"]["request"]["url"] # 提取其中的一个值 if url not in self.url_list: # 去除重复的url self.url_list.append(url) # 添加到url_list列表中 return self.url_list if __name__ == "__main__": run =CountUrl() # 获取指定目录文件下 后缀为.yml子文件的文件路径 testcase_file = run.print_all_file_path("存放yml文件的文件夹路径", ".yml") print(len(run.count_testcase_url()))
原文:https://www.cnblogs.com/LT-XILI/p/14636699.html