Taffy自动化测试框架Web开发,Python Flask实践详解

本文介绍了如何使用PythonFlask和Bootstrap开发了一个自动化测试框架,支持用例管理、执行、测试报告查看和邮件通知。作者详细解释了项目的实现细节,包括安装所需库、集成Bootstrap模板、项目结构和核心代码,以及如何通过Ajax调用运行测试用例并生成HTML报告。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 前言

最近为Taffy自动化测试框架写了个页面,主要实现了用例管理、执行,测试报告查看管理、发送邮件及配置等功能。

本页面适用所有基于taffy/nose框架编写的自动化测试脚本,或基于unittest等其他单元测试框架编写的自动化测试脚本亦可(只需进行小小的改动)。

2. 实现细节

页面使用Python Flask +Bootstrap开发,还有部分JS。

2.1 安装相关lib

pip install flask
pip install flask-bootstrap
pip install flask-wtf
pip install nose
pip install nose-html-reporting

其中nose-html-reporting是nose框架生成html报告插件,需要修改__init__.py编码方式为utf-8 (示例路径为C:\Python27\Lib\site-packages\nose_html_reporting\__init__.py),在文件最上方import中添加

reload(sys)
sys.setdefaultencoding("utf-8")

在文件最下方_format_output方法中修改return o.decode('latin-1')为return o.decode('utf-8')

 

2.2 下载Bootstrap

1) 从官网Bootstrap v3 中文文档 · Bootstrap 是最受欢迎的 HTML、CSS 和 JavaScript 框架,用于开发响应式布局、移动设备优先的 WEB 项目。 | Bootstrap 中文网,下载最新Bootstrap版本

2) 这里我们从起步 · Bootstrap v3 中文文档 | Bootstrap 中文网中选取了dashboard模版(Dashboard Template for Bootstrap

 

3) 解压下载的bootstrap-3.3.7.zip,其中dashboard模板目录为bootstrap-3.3.7\docs\examples\dashboard

2.3 Taffy_Web项目基本结构

 

1) app文件夹存放的有static静态文件,templates模版文件 (Bootstrap dashboard模版及css等文件就分别放在这2个目录下)

2) forms.py为表单文件,这里主要是配置文件用到

3) views.py为视图文件,主要存放视图函数

4) config.yml是配置文件

5) run.py是启动文件,使用python run.py即可启动整个项目

2.4 核心代码讲解

我们以核心的运行测试用例为例,详细讲解下整体的实现思路。

2.4.1 “运行测试”按钮通过onclick绑定了一个runCase()的js方法

<button type="button" id="run-case" class="btn btn-success" οnclick="runCase()">运行测试</button>

2.4.2 runCase() js方法

实现思路如下:

1) 首先调用getSelect()方法获取当前选中的测试用例,未选中任何用例时会弹出警告消息

2) 通过Http Post方法调用views.py中定义的runcCase视图函数(传入参数为选中文件列表)

3) 最后根据返回结果判断测试执行成功或失败

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视图函数

实现思路如下:

1) 首先从Post请求参数中获取需要运行的caseFiles列表,进行格式化处理(文件包含在双引号“”中,且以空格分隔)

2) 读取配置文件,生成测试报告路径及名称

3) 拼接生成nosetests运行测试用例并导出测试报告命令,使用os.system()运行

4) 最后判断配置项是否需要测试完成自动发送报告邮件,调用封装好的sendReportMail()方法

@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 示例视频

我录制一个简短的操作示例视频:Taffy自动化测试框架

3.2 示例图片

3.2.1 首页

3.2.2 用例

3.2.3 报告

3.2.4 配置

 

​现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很多我们收集的技术文档和视频教程。
如果你不想再体验自学时找不到资源,没人解答问题,坚持几天便放弃的感受
可以加入我们一起交流。而且还有很多在自动化,性能,安全,测试开发等等方面有一定建树的技术大牛
分享他们的经验,还会分享很多直播讲座和技术沙龙
可以免费学习!划重点!开源的!!!
qq群号:485187702【暗号:csdn11】

最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走! 希望能帮助到你!【100%无套路免费领取】

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

代码小怡

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值