案例故事:有一天测试经理发给我一个Bug列表,
这些Bug都是被开发打回来的无效(WithDrawn)Bug,
就是开发不认为是bug, 测试经理以为颇有必要去分析下,
为何这么多无效bug,究竟是什么缘由?
测试经理想知道,是测试提Bug太随意,仍是无此需求,仍是开发bug流转流程不对,仍是其余的什么缘由?
确定是须要看具体Bug的备注,及流转记录的,因此确定须要批量在浏览器端打开Bug详情网页一个个去看,
那如何批量地在浏览器端打开Bug呢?python
记住批处理脚本的精髓:批量顺序执行语句web
# coding=utf-8 import os import webbrowser import openpyxl # 定义本模块(文件)内的经常使用变量 excel_file = "Witdrawn_Buglist.xlsx" # excel名称 bugid_col = 1 # Bug ID 列序号 url_prefix = "https://bugreports.qt.io/browse/" # jira url 前缀 # 获取BugID并在浏览器端打开 excel = openpyxl.load_workbook(excel_file) # 读取excel里边的内容 sheet = excel.active rows = sheet.max_row for r in range(2, rows + 1): # excel第一行是标题,须要过滤掉 bug_id = sheet.cell(row=r, column=bugid_col).value webbrowser.open_new_tab("%s%s" % (url_prefix, bug_id)) # 在新窗口打开Jira Bug os.system("pause")
面向过程函数的编程思惟应该是这样的:
你须要多少个功能(函数),才能作成这个事。
最好把功能(函数)都尽可能封装好,只暴露一些的参数接口便可。
本次代码优化:
考虑到本次bug较多,188条,若是一次性在浏览器端打开,则会致使浏览器崩溃,
或者不容易查看, 因此须要考虑在Python程序执行中,每次只打开10条bug,
而后暂停,再而后按下任意键可继续显示另外的10条bug。编程
# coding=utf-8 import os import webbrowser import openpyxl def open_url(url): '''打开指定的url''' webbrowser.open_new_tab(url) def get_bug_id(excel_file, col_num): bug_id_list = [] excel = openpyxl.load_workbook(excel_file) # 读取excel里边的内容 sheet = excel.active rows = sheet.max_row for r in range(2, rows + 1): # excel第一行是标题,须要过滤掉 bug_id = sheet.cell(row=r, column=col_num).value bug_id_list.append(bug_id) return bug_id_list count = 0 bug_id_list = get_bug_id("Witdrawn_Buglist.xlsx", 1) for i in bug_id_list: open_url("https://bugreports.qt.io/browse/%s" % i) # 若是能整除10,则暂停一次 count = count + 1 if count % 10 == 0: os.system("pause") os.system("pause") # 用于防止脚本运行后直接关闭致使看不到任何执行结果
面向对象类的编程思惟应该是这样的:
若是给你一个空白的世界,在这个世界里你须要哪些种类的事物,
这些种类的事物都具有哪些共有的属性与方法,
这些种类(类)的事物(对象),和其余种类(其余类)的事物(其余对象)有什么关系。
尽可能把这些类封装好,只暴露对外的属性(变量)和方法(函数)便可。浏览器
# coding=utf-8 import os import webbrowser import openpyxl def open_url(url): '''打开指定的url''' webbrowser.open_new_tab(url) class ExcelParser(object): '''解析Excel,可是只定义一个函数获取bugID的便可''' def __init__(self, excel_file): self.__excel = openpyxl.load_workbook(excel_file) # 读取excel里边的内容, 无需被引用。 def get_bug_id(self, col_num): bug_id_list = [] sheet = self.__excel.active rows = sheet.max_row for r in range(2, rows + 1): # excel第一行是标题,须要过滤掉 bug_id = sheet.cell(row=r, column=col_num).value bug_id_list.append(bug_id) return bug_id_list if __name__ == '__main__': count = 0 e_obj = ExcelParser("Witdrawn_Buglist.xlsx") bug_id_list = e_obj.get_bug_id(1) for i in bug_id_list: open_url("https://bugreports.qt.io/browse/%s" % i) # 若是能整除10,则暂停一次 count = count + 1 if count % 10 == 0: os.system("pause") os.system("pause") # 用于防止脚本运行后直接关闭致使看不到任何执行结果
以上代码的3种实现形式均可以直接运行,好比保存为open_jira_bugs.py并放在桌面,
建议open_jira_bugs.py运行,固然也能够双击运行。
微信
跳转到官网下载本练手素材
武散人出品,请放心下载!
app
小提示:WithDrawn 的意思其实和Invalid, Rejected是相似的,表示被开发怼回来的,开发拒绝,不接受这类bug的意思,每一个公司的Jira系统所设置的Bug状态稍有不一样。函数
更多更好的原创文章,请访问官方网站:www.zipython.com
自拍教程(自动化测试Python教程,武散人编著)
原文连接:https://www.zipython.com/#/detail?id=071a1e459b6f4174b2b03cf3820e28a2
也可关注“武散人”微信订阅号,随时接受文章推送。
测试