案例故事:Android手机音视频图片解码播放测试,有将近上千条用例,
包含了不同的音视频图片文件,每条用例都至少对应了一个测试资源文件。整个测试资源仓库,将近100G,一些视频比如High Profile 5.2规格的,一个就500M,
如果每次测试都需要adb push导入这么多测试资源文件到系统,很费时间,
且系统加载这么多媒体文件,经常出现卡死,反应不过来的情况。 
其实每一轮的测试重点及对应的测试用例是不同的, 如果只挑选出当前待测试用例的测试资源文件,则可以减少adb push导入的时间, 也可以减少系统因加载过测试资源媒体文件而出现的卡死反应慢等问题, 所以我们要根据测试用例,选择性的导入测试资源到Android系统!

准备阶段

1.所有的媒体文件应该存放在一个总的“仓库”下,比如All_Resources文件夹下。2.测试用例的Excel表格里,至少是需要有一列用于标记每个用例对应“测试资源”3.只要解析测试用例Excel表格里的标记的“媒体测试文件夹”,然后去All_Resources文件夹里对应匹配,匹配成功的,复制到一个Target_Resources文件夹下。

Python批处理脚本形式

记住批处理脚本的精髓:批量顺序执行语句, 以下脚本,All_Resource文件夹必须和Python脚本在同一个路径下。

# coding=utf-8import osimport shutilimport openpyxl# 定义常量TESTCASE_EXCEL = "TestCase.xlsx"  # 测试用例文件CASE_RESOURCE_COL = 7curdir = 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.activerows = ws.max_rowfor 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")

Python面向过程函数形式

以下脚本,可自定义修改用例Excel文件,且可自定义All_Resources文件夹的路径,
没说一定要本Python脚本在同一个路径下,其代码可重塑性,比批处理脚本形式更强。

# coding=utf-8import osimport shutilimport openpyxl# 定义常量CASE_RESOURCE_COL = 7def 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")

Python面向对象类形式

以下脚本,可自定义修改用例Excel文件,且可自定义All_Resources文件夹的路径,
没说一定要与本Python脚本在同一个路径下,且相对于面向过程函数形式,
其还可以单独再拎出一个函数来:self.create_target_folder()函数,
但是面向过程函数形式,是无法拎出这么一个函数来的,因为target_resource_folder变量无法作用于2个不同函数。而面向对象类形式,self.target_resource_folder可作用于类内的各个函数。

# coding=utf-8import osimport shutilimport openpyxl# 定义常量CASE_RESOURCE_COL = 7class 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")

练手素材下载

包括:

1.一个All_Resources测试资源文件夹2.两份测试用例,不同的用例,可以生成不同的测试资源在Target_Resources文件夹内3.一个select_resource.py脚本

运行方式

1.从服务器里导出测试用例文件,或者本来的测试用例Excel文件2.确保导出来的测试用例有一列“测试资源”,并对每个用例做了测试资源文件夹的标记3.必要的话修改“测试资源”列号,修改测试用例Excel文件名,修改All_Resources资源文件夹路径4.保存为select_resource.py, 双击运行或者python select_resource.py运行5.则最终你会在当前路径下看到一个Target_Resources文件夹生成,内含当前这份测试用例需要用到测试资源。

小提示:其实All_Resources文件夹,可以是本地的,也可以是局域网网络的共享文件夹, 之前我们项目将全部的测试资源,都放到了//sharefolder/All_Resources路径下, 经过测试,可以从以上网络共享文件夹里成功取出资源文件来。

更多更好的原创文章,请访问官方网站:www.zipython.com[2] 自拍教程(自动化测试Python教程,武散人编著)
原文链接:https://www.zipython.com/#/detail?id=e19b40b9835c4cdb94d453dae834cb71 也可关注“武散人”微信订阅号,随时接受文章推送。

References

[1] 跳转到自拍教程官网下载: https://www.zipython.com/#/detail?id=e19b40b9835c4cdb94d453dae834cb71[2] www.zipython.com: https://www.zipython.com

根据测试路径自动生成测试用例_自拍教程75Python 根据测试用例选择测试资源相关推荐

  1. html自动生成工具_关于STM32代码自动生成的工具的进度....

    前情提要:STM32代码自动生成工具_本想...但是...可是...所以 首先说一下那几天大家的反应,有的持观望态度,毕竟STM32CUBE很香:有的很激动,期待我快点出东西:还有的很淡定,知道我在挖 ...

  2. 花了一年时间开发出来的基于DXF文件的加工路径自动生成软件

    随着科技水平的进步,计算机辅助制造技术CAD/CAM在机械加工中起着越来越重要得作用 ,传统的手动编程正在被自动编程所取代,目前PRO/E,UG,MasterCAM等商业软件可以根据设计 的图形直接生 ...

  3. 学生体质健康测试成绩测算软件,国家学生体质健康测试成绩自动生成模板

    学生体质健康测试成绩自动生成模板(标准版) 序号 班级编号 姓名 性别 身高 体重 肺活量 50米跑 坐位体 一分钟 体重 前屈 跳绳 指数 #### #### #### #### #### #### ...

  4. ai自动生成字幕_使用AI对您的会议进行现场字幕

    ai自动生成字幕 Many people rely on captions every day. Unfortunately, not everything has captions; this of ...

  5. python新建word文档_使用Python 自动生成 Word 文档的教程

    当然要用第三方库啦 :) 使用以下命令安装: pip install python-docx 使用该库的基本步骤为: 1.建立一个文档对象(可自动使用默认模板建立,也可以使用已有文件). 2.设置文档 ...

  6. python生成api文档_Django 自动生成api接口文档教程

    最近在写测试平台,需要实现一个节点服务器的api,正好在用django,准备使用djangorestframework插件实现. 需求 实现一个接口,在调用时,通过传递的参数,直接运行对应项目的自动化 ...

  7. python api接口生成_Django 自动生成api接口文档教程

    最近在写测试平台,需要实现一个节点服务器的api,正好在用django,准备使用djangorestframework插件实现. 需求 实现一个接口,在调用时,通过传递的参数,直接运行对应项目的自动化 ...

  8. python自动生成和读取word_使用Python自动生成Word文档的教程

    当然要用第三方库啦 :) 使用以下命令安装: pip install python-docx 使用该库的基本步骤为: 1.建立一个文档对象(可自动使用默认模板建立,也可以使用已有文件). 2.设置文档 ...

  9. sql自动生成工具_可自动生成代码,5款基于AI的开发工具

    如今,对机器学习潜力感兴趣的程序员都在讨论,如何使用人工智能和基于人工智能的软件开发工具构建应用程序.例如PyTorch和TensorFlow之类的解决方案. 除此之外,机器学习技术正以另一种有趣的方 ...

最新文章

  1. GitHub回应突然断供:身在美国不由己,无权提前通知预警
  2. hazelcast集群配置_使用HazelCast进行Hibernate缓存:基本配置
  3. GoPro 8及旗下首款360全景运动摄像机HERO Max将发售
  4. java内存管理之内存模型
  5. 已被骗数百万美金!App Store 中诈骗应用横行,网友:“苹果只顾抽成!”
  6. 百度图神经网络学习——day01
  7. Ubuntu18.04快捷键
  8. 基于Hadoop集群的Spark集群搭建
  9. 偏微分方程数值解法python_微分方程 | 常微分
  10. 灌篮高手全国大赛漫画 (23-31卷) + 十日后
  11. 大数据工程应用 数据分析_大数据工程的方式
  12. 网页播放Flash视频尝试的三种方式
  13. 现代软件工程 第一章 【概论】练习与讨论
  14. 登康口腔冲刺上市:销售费用远高于研发,旗下品牌包括冷酸灵等
  15. 前端技术猜想-2018
  16. rpm软件安装冲突:conflicts with
  17. 电子产品长时间不充电导致无法开机、故障、充不满电等问题(如kindle:电池+叹号)
  18. JS之父再谈JS历史(一)
  19. 51单片机——软件延时实现跑马灯仿真
  20. C语言 11:if else语句、if else嵌套,例题样式:商品满100件打九折、比较几个数大小。

热门文章

  1. 在IIS express 下用ajax调用webmethod
  2. 做iOS开发的这2年:30而立投身iOS开发嫌晚?
  3. extern的关键字用法(C# 参考)
  4. XP`开机速度慢的解决方法
  5. 轻松实现SQL Server异地备份
  6. CentOS 5.5环境下安装配置Varnish
  7. Springmvc的helloworld实例
  8. ASP.NET应用程序使用NLog记录日志
  9. 利用BIND 9基于电信网通智能DNS 搭建
  10. ABAP TBL控制插入和更改