Xmind2testcase二次开发之preview界面添加保存功能,将上传的xmind和对应csv文件保存到本地

应用场景:

每次编写好的用例都在每个测试人员的电脑上,长期以往,人员更替,会有很多测试用例莫名的消失,因此希望在Xmind2testcase平台上新增一个保存功能,能把当时写的用例统一都保存到测试服务器上,方便以后相关人员进行查阅.

思路:

在preview.html页面下添加一个保存按钮,当点击此按钮后,需要有个权限的判断(因为公司中使用xmind导入用例后,可将preview页面发送给研发\产品\项目经理等人查看,此按钮只能测试人员来点击,来确定最终版本的测试用例),判断后将相关的用例文件保存到本地

实现效果:

使用Xmind2testcase平台,导入xmind文件后,在preview.html下新增保存本地按钮,测试人员再确定此版本为最终版本后,点击此按钮,判断当前主机ip是否为测试人员ip,如果是则将此次上传的xmind和csv文件保存到对应服务器的某个文件夹下,不是测试人员的ip的话,则弹出无权限的提示;当保存的文件在本地存在的话则会更新此文件,保证保存的文件为最新版本.

功能点实现及代码如下:
1 保存到本地功能(点击保存,需要在指定path下创建文件夹,每个上传的用例创建一个单独的项目文件夹存放,此文件夹下包含xmind文件和csv文件)

修改preview.html文件,添加保存按钮:

<div>
    <a href="{{ url_for("local_save", filename= name) }}">
        <input style="font-size: 22px;margin-top: -120px;margin-right:150px;float: right" type="submit" class="pure-button " id="save" value="保存最终版本" />
    </a>
</div>

修改application.py文件,新增local_save函数:

@app.route('/local_save/<filename>')
def local_save(filename):  # 文件保存到本地方法
     full_path = join(app.config['UPLOAD_FOLDER'], filename)
     if not exists(full_path):
         abort(404)

     path = r"E:/Testcase/"  # 想要创建的文件
     if os.path.isdir(path) == False:  # 如果该文件不存在,就创建该文件
         os.mkdir(path)

     dir_path = path + filename[:-6]  # 每个项目的路径
     if os.path.isdir(dir_path) == False:  # 上传项目后,判断dir_path路径下有没有该项目的文件夹,如没有则创建
         os.mkdir(path + filename[:-6])
     listdir = os.listdir(dir_path)
     for i in range(len(listdir)):  # 判断是否文件夹下已存在上传文件名称
         if listdir[i] == filename:
             os.unlink(dir_path + '/' + listdir[i])  # 删除重名文件,替换重名文件
         elif listdir[i][:-4] == filename[:-6]:
             os.unlink(dir_path + '/' + listdir[i])

     zentao_csv_file = xmind_to_zentao_csv_file(full_path)  # 生成csv文件
     csv_path = os.path.abspath(zentao_csv_file)  # 获取当前文件地址
     shutil.move(full_path, dir_path)  # 将xmind文件移动到指定文件夹下
     shutil.move(csv_path, dir_path)  # 将csv文件移动到指定文件夹下
     return render_template('savefile.html')

还需要新增一个保存成功的页面savefile.html:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>XMind2TestCase</title>
    <link rel="shortcut icon" href="{{ url_for('static',filename='favicon.ico') }}" type="image/x-icon"/>
    <link rel="stylesheet" type="text/css" media="all" href="{{ url_for('static',filename='css/pure-min.css') }}">
    <link rel="stylesheet" type="text/css" media="all" href="{{ url_for('static',filename='css/custom.css') }}">
</head>
<style>
    body{ text-align:center}
    #main{ margin-top: 20%}
</style>
<body>
<div class="splash-container" >
    <div class="splash" id="main">
        <h1>
            保存成功!
        </h1>
        <h2><a href="{{ url_for("index") }}" style="color:#FFFFFF; text-shadow: 5px 5px 11px rgba(0, 0, 0, 0.58);">Go Back</a></h2>
    </div>
</div>
</body>
</html>
2 点击保存按钮后,需要增加一个权限判断(使用ip增加权限判断,当测试人员点击保存后,判断该测试人员的电脑ip与写好的ip是否一致,不一致则跳转到无权限的提示页面)

application.py文件下,修改上面的local_save函数:

@app.route('/local_save/<filename>')
def local_save(filename):  # 文件保存到本地方法
    ip_List = ['这里输入可以执行保存操作的ip']  # ip列表
    hostname = socket.gethostname()  # 获取主机名称
    ip = socket.gethostbyname(hostname)  # 获取本主机ip
    for i in range(len(ip_List)):  # 遍历ip列表
        if ip_List[i] == ip:  # ip和列表中的一致则执行文件保存
            full_path = join(app.config['UPLOAD_FOLDER'], filename)
            if not exists(full_path):
                abort(404)

            path = r"E:/Testcase/"  # 想要创建的文件
            if os.path.isdir(path) == False:  # 如果该文件不存在,就创建该文件
                os.mkdir(path)

            dir_path = path + filename[:-6]  # 每个项目的路径
            if os.path.isdir(dir_path) == False:  # 上传项目后,判断dir_path路径下有没有该项目的文件夹,如没有则创建
                os.mkdir(path + filename[:-6])
            listdir = os.listdir(dir_path)
            for i in range(len(listdir)):  # 判断是否文件夹下已存在上传文件名称
                if listdir[i] == filename:
                    os.unlink(dir_path + '/' + listdir[i])  # 删除重名文件,替换重名文件
                elif listdir[i][:-4] == filename[:-6]:
                    os.unlink(dir_path + '/' + listdir[i])

            zentao_csv_file = xmind_to_zentao_csv_file(full_path)  # 生成csv文件
            csv_path = os.path.abspath(zentao_csv_file)  # 获取当前文件地址
            shutil.move(full_path, dir_path)  # 将xmind文件移动到指定文件夹下
            shutil.move(csv_path, dir_path)  # 将csv文件移动到指定文件夹下
            return render_template('savefile.html')
        else:
            return render_template('permissions.html', name=filename)

新增permissions.html页面,无保存操作权限的提示页面(会返回一个name参数,用来permissions.html页面能返回到preview.html页面时有用例数据):

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>XMind2TestCase</title>
    <link rel="shortcut icon" href="{{ url_for('static',filename='favicon.ico') }}" type="image/x-icon"/>
    <link rel="stylesheet" type="text/css" media="all" href="{{ url_for('static',filename='css/pure-min.css') }}">
    <link rel="stylesheet" type="text/css" media="all" href="{{ url_for('static',filename='css/custom.css') }}">
</head>
<style>
    body{ text-align:center}
    #main{ margin-top: 20%}
</style>
<body>
<div class="splash-container" >
    <div class="splash" id="main">
        <h1>
            无权限执行保存操作!
        </h1>
        <h2><a href="{{ url_for('preview_file',filename = name )}}" style="color:#FFFFFF; text-shadow: 5px 5px 11px rgba(0, 0, 0, 0.58);">Go Back</a></h2>
    </div>
</div>
</body>
</html>

以上就完成了这个小功能,有问题或有需要目前修改的源码可私信或评论!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值