背景

前一篇博客记录的可以上传用例到testlink指定用例集的脚本,内部分享给了之后,同事希望能将testlink上原有的用例下载下来,用于下次修改上传,所有有了本文脚本。

具体实现

获取用例信息

def download_testcase():"""获取(下载)testlink上面指定用例集的数据:return:"""datas = []for data in tlc.getTestCasesForTestSuite(father_id, True, 'full'):actions = []expected_results = []name = data["name"]summary = data["summary"]preconditions = data["preconditions"]importance = data["importance"]execution_type = data["execution_type"]author = data["author_id"]# print(json.dumps(data, indent=4))for i in range(len(data["steps"])):actions.append(data["steps"][i]["actions"])expected_results.append(data["steps"][i]["expected_results"])datas.append((name, preconditions, '\n'.join(actions), '\n'.join(expected_results), format_execution_type(execution_type), format_auth(author), format_importance(importance), summary))

进行数据转换

def format_execution_type(source_data):"""转换执行方式:param source_data::return:"""switcher = {'2': "自动化",'1': "手工"}return switcher.get(source_data, "Param not defind")def format_importance(source_data):"""转换优先级:param source_data::return:"""switcher = {'1': "低",'2': "中",'3': "高"}return switcher.get(source_data, "Param not defind")def format_auth(source_data):"""转换作者:可以通过testlink的user表查询到对应id->name对:param source_data::return:"""switcher = {'100': "tester_name",}return switcher.get(source_data, "Param not defind")

保存至Excel

def save_suits(file_path, datas):"""保存用例:param file_path: 保存路径:param datas::return:"""book = xlrd.open_workbook(file_path, formatting_info=True)  # 读取Excelnew_book = copy.copy(book)  # 复制读取的Excelsheet = new_book.get_sheet(0)  # 取第一个sheet页line_num = 1for i in range(0, len(datas)):name, preconditions, actions, expected_results,  execution_type, author, importance, summary = datas[i]sheet.write(line_num, 0, u'%s' % name)sheet.write(line_num, 1, u'%s' % preconditions)sheet.write(line_num, 2, u'%s' % actions)sheet.write(line_num, 3, u'%s' % expected_results)sheet.write(line_num, 4, u'%s' % execution_type)sheet.write(line_num, 5, u'%s' % author)sheet.write(line_num, 6, u'%s' % importance)sheet.write(line_num, 7, u'%s' % summary)line_num += 1report_path = os.path.abspath(os.path.join('download'))if not os.path.exists(report_path):os.makedirs(report_path)suits_name = get_suites(father_id)["name"]new_book.save(os.path.abspath(os.path.join(report_path, '用例集_{}@{}.xlsx'.format(suits_name, time.strftime('%Y.%m.%d@%H%M%S')))))  def get_suites(suite_id):"""获取用例集信息:return: """try:suites = tlc.getTestSuiteByID(suite_id)return suitesexcept testlink.testlinkerrors.TLResponseError as e:# traceback.print_exc()logger.warning(str(e).split('\n')[1])logger.warning(str(e).split('\n')[0])return

使用方法

环境依赖

环境依赖 安装方法
Python3
xlrd库 pip install xlrd
testlink库 pip install TestLink-API-Python-client
xlutils pip install xlutils

具体方法

  • 将上述的代码保存到一个文件中,底部添加下列代码进行调用
if __name__ == "__main__":url = "http://localhost/lib/api/xmlrpc/v1/xmlrpc.php"key = "6c3fe0796142db21"  # 这个key是错误的keytlc = testlink.TestlinkAPIClient(url, key)father_id = "274539"   # 想要下载的用例集的ID,可通过在testlink界面选取用例集,然后点击右键获取download_testcase()
  • 目录结构参考,与上一篇文章的脚本放在了一起
D:\Project\UPLOAD_DATA2TESTLINK
│  download_testcase.py
│  logger_better.py
│  upload_excel_data.py
│
└─testCasedown_load_template.xls
  • 在上一步的文件同一目录下创建一个testCase文件夹,创建一个xls文件,文件格式如下:

转载于:https://www.cnblogs.com/Detector/p/9030650.html

【Python】实现将testlink上的用例指定格式保存至Excel,用于修改上传相关推荐

  1. python处理文件格式_python处理文本文件并生成指定格式的文件

    {"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],&q ...

  2. python中csv库的writer函数_指定格式csv.writer在Python中

    我正在使用csv.DictWriter从一组词典输出csv文件.我使用以下函数:def dictlist2file(dictrows, filename, fieldnames, delimiter= ...

  3. 云小课 | 华为云KYON:网段零修改上云,简单又好用

    摘要:KYON(Keep Your Own Network)是华为云推出的企业级云网络解决方案,KYON能让用户直接将IDC组网搬到云上,网段零修改,简单又好用. 本文分享自华为云社区<[云小课 ...

  4. Python网络爬虫与信息提取笔记08-实例2:淘宝商品比价定向爬虫

    Python网络爬虫与信息提取笔记01-Requests库入门 Python网络爬虫与信息提取笔记02-网络爬虫之"盗亦有道" Python网络爬虫与信息提取笔记03-Reques ...

  5. 机器人中的数值优化|【二】最速下降法,可行牛顿法的python实现,以Rosenbrock function为例

    机器人中的数值优化|[二]最优化方法:最速下降法,可行牛顿法的python实现,以Rosenbrock function为例 在上一节中提到了我们详细探讨了数值优化/最优化理论中的基本概念和性质,现在 ...

  6. 利用threading库实现python多线程以多线程音频实时输入为例

    利用threading库实现python多线程以多线程音频实时输入为例 threading详解 1. 线程的概念: 线程,有时被称为轻量级进程(Lightweight Process,LWP),是程序 ...

  7. python可视化多个机器学习模型在独立测试集(test data set)上面的AUC值、可视化模型效能

    python可视化多个机器学习模型在独立测试集(test data set)上面的AUC值.可视化模型效能 # x_lables为模型名称列表,包括,逻辑回归.朴素贝叶斯.支持向量机.随机森林.xgb ...

  8. python手机版打了代码运行不了-三款可以在安卓手机上运行Python代码的软件

    导语 READ 我相信大家平时大多数时间肯定都是在电脑上面敲Python代码,有时候出门外或者不方便使用电脑的时候,你是否曾想用手机就能编写和运行Python代码呢?本文将会介绍3款不同的安卓软件帮忙 ...

  9. python整理excel数据-利用python整理需要的excel报表(上)

    一.背景 目前公司的项目管理采用开源项目redmine,对于redmine本文不多做介绍,有兴趣的可以自行百度了解下. 在每周周会汇报任务进度时,需要我们准备各组的项目进度,按照一定的excel模板整 ...

最新文章

  1. javaScript字符串应用
  2. 各种好用的代码生成器
  3. boost::geometry::detail::overlay::get_relative_order用法的测试程序
  4. Tensorflow 改进的MNIST手写体数字识别
  5. 开源开放 | Beyond 预训练语言模型,NLP还需要什么样的知识?
  6. 识别物体是否存在_【科学实践Vol.1】带你玩转“人脸识别”
  7. oracle dbms_crypto,DBMS_CRYPTO包对Oracle加密
  8. Vue+Vue-router+Vuex项目实战
  9. 根据专利号到专利查询的网站上抓取想要的信息(上)
  10. 排版设计软件QuarkXPress 2022 for mac
  11. python中pandas数据分析基础3(数据索引、数据分组与分组运算、数据离散化、数据合并)...
  12. 武汉科技大学计算机学院培养方案,武汉科技大学培养方案.DOC
  13. python 列表解析式
  14. Linux使用sendmail邮件监控[运维监控]
  15. SpringBoot:快速使用Spring
  16. maple 解代数方程组得多项式_Maple笔记2--常微分方程求解
  17. 0x30数学知识(0x38 概率与数学期望)例题3:扑克牌(题解)
  18. 运用瀑布模型完成PL/SQL程序设计
  19. (附源码)ssm南昌旅游网站管理系统 毕业设计 101407
  20. PDF文件怎么转换为图片?

热门文章

  1. 关于如何在pc端使用github
  2. 读农民工兄弟学C#文章后的感觉
  3. ORB_SLAM2局部建图线程
  4. html 简单机器人对话页面,简单的js聊天机器人框架BotUI
  5. html5 本地批量存储,HTML5本地存储
  6. mysql的安装和启动_mysql安装和启动
  7. linux vim project,vim插件project的用法
  8. java opencv 环境_基于java的OpenCV环境搭建
  9. linux ls 命令 路径,使用ls命令在Linux中使用完整路径列出文件
  10. Matplotlib绘制象限图——支持中文、箭头、自定义轴线交点