案例故事:Android手机音视频图片解码播放测试,有将近上千条用例,
包含了不一样的音视频图片文件,每条用例都至少对应了一个测试资源文件。
整个测试资源仓库,将近100G,一些视频好比High Profile 5.2规格的,一个就500M,
若是每次测试都须要adb push导入这么多测试资源文件到系统,很费时间,
且系统加载这么多媒体文件,常常出现卡死,反应不过来的状况。
其实每一轮的测试重点及对应的测试用例是不一样的,
若是只挑选出当前待测试用例的测试资源文件,则能够减小adb push导入的时间,
也能够减小系统因加载过测试资源媒体文件而出现的卡死反应慢等问题,
因此咱们要根据测试用例,选择性的导入测试资源到Android系统!python
记住批处理脚本的精髓:批量顺序执行语句,
如下脚本,All_Resource文件夹必须和Python脚本在同一个路径下。服务器
# coding=utf-8 import os import shutil import openpyxl # 定义常量 TESTCASE_EXCEL = "TestCase.xlsx" # 测试用例文件 CASE_RESOURCE_COL = 7 curdir = os.getcwd() # 测试资源总仓库文件夹 all_resource_folder = os.path.join(curdir, "All_Resources") # 目标资源文件夹, 即输出文件夹 target_resource_folder = os.path.join(curdir, "Target_Resources") # 若是没有Target_Resources这个文件夹,则建立这个文件夹 if not os.path.exists(target_resource_folder): os.mkdir(target_resource_folder) # 先删除Target_Resource这个文件夹下的全部文件,确保每次这个文件夹每次都是根据最新的用例生成的。 shutil.rmtree(target_resource_folder) wb = openpyxl.load_workbook(TESTCASE_EXCEL) ws = wb.active rows = ws.max_row for i in range(2, rows + 1): case_folder = ws.cell(row=i, column=CASE_RESOURCE_COL).value # 遍历第7列 resource_folder_path = os.path.join(all_resource_folder, case_folder) target_folder_path = os.path.join(target_resource_folder, case_folder) if os.path.exists(resource_folder_path): # 复制文件夹 shutil.copytree(resource_folder_path, target_folder_path) print("测试资源已经复制到%s文件夹下了" % target_resource_folder) os.system("pause")
如下脚本,可自定义修改用例Excel文件,且可自定义All_Resources文件夹的路径,
没说必定要本Python脚本在同一个路径下,其代码可重塑性,比批处理脚本形式更强。微信
# coding=utf-8 import os import shutil import openpyxl # 定义常量 CASE_RESOURCE_COL = 7 def select_resource_by_case(case_excel, resource_path): '''根据测试用例挑选测试资源''' # 定义用于存放模板资源文件的文件夹''' target_resource_folder = os.path.join(curdir, "Target_Resources") # 若是没有Target_Resources这个文件夹,则建立这个文件夹 if not os.path.exists(target_resource_folder): os.mkdir(target_resource_folder) # 先删除Target_Resource这个文件夹下的全部文件,确保每次这个文件夹每次都是根据最新的用例生成的。 shutil.rmtree(target_resource_folder) wb = openpyxl.load_workbook(case_excel) ws = wb.active rows = ws.max_row for i in range(2, rows + 1): case_folder = ws.cell(row=i, column=CASE_RESOURCE_COL).value # 遍历第7列 resource_folder_path = os.path.join(resource_path, case_folder) target_folder_path = os.path.join(target_resource_folder, case_folder) if os.path.exists(resource_folder_path): # 复制文件夹 shutil.copytree(resource_folder_path, target_folder_path) print("测试资源已经复制到%s文件夹下了" % target_resource_folder) # 其实测试资源总仓库文件夹的Path是能够自定义的 curdir = os.getcwd() # 测试资源总仓库文件夹 all_resource_folder = os.path.join(curdir, "All_Resources") select_resource_by_case("TestCase.xlsx", all_resource_folder) os.system("pause")
如下脚本,可自定义修改用例Excel文件,且可自定义All_Resources文件夹的路径,
没说必定要本Python脚本在同一个路径下,且相对与面向过程函数形式,
其还能够单独再拎出一个函数来:self.create_target_folder()函数,
可是面向过程函数形式,是没法拎出这么一个函数来的,由于target_resource_folder变量没法做用于2个不一样函数。
而面向对象类形式,self.target_resource_folder可做用于类内的各个函数。网络
# coding=utf-8 import os import shutil import openpyxl # 定义常量 CASE_RESOURCE_COL = 7 class ResourceSelecter(object): def __init__(self, resource_path): self.resource_path = resource_path self.target_resource_folder = None self.create_target_folder() def create_target_folder(self): '''建立用于存放模板资源文件的文件夹''' self.target_resource_folder = os.path.join(os.getcwd(), "Target_Resources") # 若是没有Target_Resources这个文件夹,则建立这个文件夹 if not os.path.exists(self.target_resource_folder): os.mkdir(self.target_resource_folder) # 先删除Target_Resource这个文件夹下的全部文件,确保每次这个文件夹每次都是根据最新的用例生成的。 shutil.rmtree(self.target_resource_folder) def select_resource_by_case(self, case_excel): '''根据测试用例挑选测试资源''' wb = openpyxl.load_workbook(case_excel) ws = wb.active rows = ws.max_row for i in range(2, rows + 1): case_folder = ws.cell(row=i, column=CASE_RESOURCE_COL).value # 遍历第7列 resource_folder_path = os.path.join(self.resource_path, case_folder) target_folder_path = os.path.join(self.target_resource_folder, case_folder) if os.path.exists(resource_folder_path): # 复制文件夹 shutil.copytree(resource_folder_path, target_folder_path) print("测试资源已经复制到%s文件夹下了" % self.target_resource_folder) if __name__ == '__main__': # 测试资源总仓库文件夹 all_resource_folder = os.path.join(os.getcwd(), "All_Resources") r_obj = ResourceSelecter(all_resource_folder) r_obj.select_resource_by_case("TestCase.xlsx") os.system("pause")
包括:函数
小提示:其实All_Resources文件夹,能够是本地的,也能够是局域网网络的共享文件夹,
以前咱们项目将所有的测试资源,都放到了//sharefolder/All_Resources路径下,
通过测试,能够从以上网络共享文件夹里成功取出资源文件来。
测试
更多更好的原创文章,请访问官方网站:www.zipython.com
自拍教程(自动化测试Python教程,武散人编著)
原文连接:https://www.zipython.com/#/detail?id=e19b40b9835c4cdb94d453dae834cb71
也可关注“武散人”微信订阅号,随时接受文章推送。
网站