标签:方式 需要 批处理脚本 exists 用例 运行 ref 网络 tail
案例故事:Android手机音视频图片解码播放测试,有将近上千条用例,
包含了不同的音视频图片文件,每条用例都至少对应了一个测试资源文件。
整个测试资源仓库,将近100G,一些视频比如High Profile 5.2规格的,一个就500M,
如果每次测试都需要adb push导入这么多测试资源文件到系统,很费时间,
且系统加载这么多媒体文件,经常出现卡死,反应不过来的情况。
其实每一轮的测试重点及对应的测试用例是不同的,
如果只挑选出当前待测试用例的测试资源文件,则可以减少adb push导入的时间,
也可以减少系统因加载过测试资源媒体文件而出现的卡死反应慢等问题,
所以我们要根据测试用例,选择性的导入测试资源到Android系统!
记住批处理脚本的精髓:批量顺序执行语句,
以下脚本,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
也可关注“武散人”微信订阅号,随时接受文章推送。
标签:方式 需要 批处理脚本 exists 用例 运行 ref 网络 tail
原文地址:https://www.cnblogs.com/zipython/p/13263583.html