Taffy自动化测试框架Web开发,Python Flask实践详解
1. 前言
2. 实现细节
2.1 安装相关lib
pip install flask pip install flask-bootstrap pip install flask-wtf pip install nose pip install nose-html-reporting
reload(sys) sys.setdefaultencoding("utf-8")
在文件最下方_format_output方法中修改return o.decode('latin-1')为return o.decode('utf-8')
2.2 下载Bootstrap
3) 解压下载的bootstrap-3.3.7.zip,其中dashboard模板目录为bootstrap-3.3.7\docs\examples\dashboard
2.3 Taffy_Web项目基本结构
2.4 核心代码讲解
2.4.1 “运行测试”按钮通过onclick绑定了一个runCase()的js方法
<button type="button" id="run-case" class="btn btn-success" onclick="runCase()">运行测试</button>
2.4.2 runCase() js方法
function runCase() {var params = {};var selects=getSelect();var button=$("#run-case");if(selects == "") {alertMessage('未选中任何文件!','warning');}else {button.attr("disabled", true);params["caseFiles"]=selects;alertMessage("后台运行测试中,请稍候...");$.post("/runCase",params,function(result){if (result['desc']=='0' || result['desc']) {alertMessage('测试运行完成,返回码:<strong>'+result['desc']+'</strong>.\t<a href="report" class="alert-link">点击查看报告!</a>');//刷新用例列表getCase();}else {alertMessage(result['desc'],'danger');}button.removeAttr("disabled");});} }
2.4.3 views.py中定义的runcCase视图函数
@app.route("/runCase", methods=["GET", "POST"]) def runCase():if request.method == "POST":# 获取数组参数caseFiles = request.form.getlist("caseFiles[]")result = {}try:caseFiles = ' '.join(map(lambda i: '"' + i + '"', caseFiles)).encode('gbk')config = yaml.load(file(CONFIG_FILE, 'r'))# Taffy路径taffy_dir = config['taffy_dir']# 测试报告名称report_name = config['report_name'] + '_{0}.html'.format(dt.now().strftime('%Y%m%d_%H%M%S'))# 先判断文件夹是否存在,不存在则新建reportDir = os.path.join(taffy_dir, 'Results')if not os.path.exists(reportDir):os.makedirs(reportDir)# 测试报告路径report_file = os.path.join(reportDir, report_name)command = 'nosetests -v {0} --with-html --html-report="{1}"'.format(caseFiles, report_file.encode('gbk'))result['desc'] = os.system(command)# 判断是否自动发送结果邮件if config['auto_send']:result = sendReportMail(report_file)except Exception as e:result['exception'] = u'用例运行失败:{0}'.format(e)return jsonify(result)
3. 成果展示
3.1 示例视频
3.2 示例图片
3.2.1 首页
3.2.2 用例
3.2.3 报告
3.2.4 配置
4. 源码下载
5. 参考资料
转载于:https://www.cnblogs.com/lovesoo/p/8044000.html
Taffy自动化测试框架Web开发,Python Flask实践详解相关推荐
- 自动化测试框架[Cypress命令行执行测试详解]
前提 已经熟练掌握了Cypress的基本知识,请参考自动化测试框架[Cypress概述]和自动化测试框架[各自动化测试框架比较] 已经熟练掌握Cypress环境配置,请参考自动化测试框架[Cypres ...
- Java自动化测试框架-12 - TestNG之xml文件详解篇 (详细教程)
1.简介 现在这篇,我们来学习TestNG.xml文件,前面我们已经知道,TestNG就是运行这个文件来执行测试用例的.通过本篇,你可以进一步了解到:这个文件是配置测试用例,测试套件.简单来说,利用这 ...
- python上手--flask框架web开发实践-数据库
这篇文章,由易而难,步骤清晰,思路讲得很明白.花两小时跟着作者稻谷先生的这篇文章走一遍,对学习python使用Flask来开发web的应用很有帮助. python上手--flask框架web开发实践 ...
- Flask学习 黑马程序员-6节课入门Flask框架web开发视频(中途撤退,寻找py3教程)
文章目录 postman工具 get和post 如何给路由传参 解析 @app.route('')这个叫视图函数 Jinja2模板引擎 动态传参 注释.变量代码块以及控制代码块的使用 注释:ctrl+ ...
- python开发web教学视频_Python快速Web开发入门与实践视频课程
Python快速Web开发入门与实践欢迎来到KK的<Python快速Web开发入门与实践>捧场!下面请允许我为这套课程做一点介绍. <Python快速Web开发入门与实践>是一 ...
- Web开发 ------ 基于Flask的 任务清单管理系统(二):用户认证
文章目录 任务清单管理系统(二) 一.用户认证 1.数据库模型 (1)技术要点 (2)核心代码 提交数据库 提交github: (3)测试代码 2.Flask-Login优化数据库模型 (1)技术要点 ...
- Python基础必掌握的return语句用法和实践详解
return 语句是函数和方法的关键组成部分.可以使函数将 Python对象发送回调用者代码,这些对象被称为函数的返回值. 使用它们在程序中执行进一步的计算或者程序的执行. 整套学习自学教程中应用的数 ...
- python数值转换机_用于ETL的Python数据转换工具详解
ETL的考虑 做 数据仓库系统,ETL是关键的一环.说大了,ETL是数据整合解决方案,说小了,就是倒数据的工具.回忆一下工作这么些年来,处理数据迁移.转换的工作倒 还真的不少.但是那些工作基本上是一次 ...
- php事件和行为,Yii框架组件和事件行为管理详解
Yii框架组件和事件行为管理详解 来源:中文源码网 浏览: 次 日期:2018年9月2日 [下载文档: Yii框架组件和事件行为管理详解.txt ] (友情提示:右键点上行txt文档名- ...
最新文章
- Bioinfo:学习Python,做生信PartII 学习笔记
- 初始化方法-在类的外部给对象增加属性的隐患
- android 相机和相册,[转载][转载] android调用相机和相册
- 计算机主机内部由什么组成,计算机是由主机和什么组成的?
- 查看分支编码_MySQL分支数据库MariaDB之CentOS安装教程
- 细菌基因组 | rpoB的插入变异导致高度耐药性
- bzoj 4570: [Scoi2016]妖怪 凸包
- 冯德勇linux百度网盘,RHCE 学习笔记(14)- 文件系统(2) - 搜索文件
- 圆周率一千万亿位_圆周率是如何计算的?祖冲之的缀术居然失传了
- CRM中复制记录的方法
- 关于Oracle用sqlldr导入限制值长度大于255问题解决方法
- ansible安装包和管理 playbook相关
- 粒子群算法求解0-1背包问题
- 【有利可图网】PS实战教程28:巧用调整边缘滤镜抠毛发
- FreeCAD源码分析:FreeCADApp模块
- win7计算器功能详解 win10参考
- 腾讯点播云,上传视频实例, 使用点播云播放器实例
- 维护计算机网络教室的常见问题及解决方案
- 数据分析--分类与回归模型(一)
- 五大经典算法之四贪心算法
热门文章
- PAT B1084(没事别再那捯饬别人的代码,思路正确,你按照你自己的写就好了)
- MATLAB算法实战应用案例精讲-【自动驾驶】毫米波雷达(最终篇)
- tf.nn.sampled_softmax_loss
- 第6节 寻找主力踪迹——大宗交易数据解读
- r4s创建热点设置密码后无法连接的解决办法(提示密码错误)
- sequelize 增加数据库字段_使用Sequelize操作MySQL
- QQ的个人中心模块思维导图
- 【论文汇总】RGB-T/D Crowd Counting论文汇总
- Python新手上路-基本语法元素
- php投票post,请教一个简单的投票页面,post怎么写