zoukankan      html  css  js  c++  java
  • 自动化测试平台的探索

    一、概述  

      距离上一篇帖子过去了将近一年的时间,主要原因是因为这一年刚加入新公司,入职了一个新的行业,所以需要花时间学习新的业务知识,最近才有时间去探索上一篇帖子说的自动化平台的开发,这次只是先做了一下可行性研究,详细如下

    二、前端设计

    只做了基本的几个控件, 在文本框内输入要生成的文件数量,点击生成后在相应的目录下生成对应的文件

        

    对应的代码也很简单,就一个from表单,如下:

     1 <!DOCTYPE html>
     2 <html lang="en">
     3 <head>
     4     <meta charset="UTF-8">
     5     <title>测试文件生成页</title>
     6 </head>
     7 <body>
     8 <form action="/result" method="post">
     9     TXT: <input type="text" name="txt" style="80px">
    10     <br>
    11     JPG: <input type="text" name="jpg" style="80px">
    12     <br>
    13     PDF: <input type="text" name="pdf" style="80px">
    14     <br>
    15     EXEC: <input type="text" name="exec" style="80px">
    16     <br><br>
    17     <input type="submit" value="生成" style="130px">
    18 </form>
    19 </body>
    20 </html>

    三、后台逻辑

    之前打算用Django实现,但目前项目组用的都是tornado,所以这次使用tornado来实现

    tornado教程:http://demo.pythoner.com/itt2zh/index.html

    tornado官方文档:http://www.tornadoweb.org/en/stable/

    后台源码:

    逻辑很简单,获取前端txt文本框的值,如果值不为空,则生成对应数量的测试文件

     1 #!/usr/bin/env python
     2 # coding:utf-8
     3 import tornado.httpserver
     4 import tornado.ioloop
     5 import tornado.options
     6 import tornado.web
     7 import tornado.escape
     8 import os
     9 import time
    10 
    11 from tornado.options import define, options
    12 
    13 define("port", default=8004, help="run on the given port", type=int)
    14 
    15 PATH = "D:/test_data/"
    16 
    17 
    18 def create_txt(path=PATH, file_num=1, file_size=8):
    19     """
    20     :param path: 测试文件的存放路径
    21     :param file_num: 需要生成的数量
    22     :param file_size: 每个文件的大小,以KB为单位
    23     """
    24     if not os.path.exists(path):
    25         os.mkdir(path)
    26     for i in range(file_num):
    27         file_name = "test_txt_"+str(i)+".txt"
    28         data = "test_t"+str(time.localtime())
    29         with open(os.path.join(path, file_name), 'w') as f_obj:
    30             for j in range(8*file_size):
    31                 f_obj.write(data)
    32         print("create file: test_txt_(0-%d).txt in path %s success, file size: %sKB" % (file_num, path, file_size))
    33 
    34 
    35 class MainHandler(tornado.web.RequestHandler):
    36     def get(self):
    37         self.render("index.html")
    38 
    39 
    40 class Resultandler(tornado.web.RequestHandler):
    41     def post(self):
    42         txt_num = self.get_argument("txt")
    43         if str(txt_num) != "":
    44             create_txt(file_num=int(txt_num))
    45 
    46 
    47 if __name__ == "__main__":
    48     handlers = [
    49         (r"/", MainHandler),
    50         (r"/result", Resultandler),
    51     ]
    52     template_path = os.path.dirname(__file__) + "/" + "template"
    53     tornado.options.parse_command_line()
    54     print("application is running")
    55     app = tornado.web.Application(handlers, template_path)
    56     http_server = tornado.httpserver.HTTPServer(app)
    57     http_server.listen(options.port)
    58     tornado.ioloop.IOLoop.instance().start()

    四、结果

      如果做过web开发的朋友应该知道,这样生成的文件是存放在服务器端的,而我最初的设想是直接在客户端生成的,这样就与设计不符,方案缺少可行性

    五、其他

      1、跟同事一起讨论 建议先在服务器上生成,然后在下载到用户的电脑,这样技术上可行,但实现就复杂了,而且如果需要的文件数量多且文件较大,传输的时间会很长

      2、虽然次方案不能准备测试文件,但生成多个文件的分享地址还是能实现的,平台基本的结构就是这样了,还在学习当中,欢迎高手指点!

  • 相关阅读:
    idea本地安装 lombok插件
    win7系统开机启动出现蓝屏,提示BAD_SYSTEM_CONFIG_INFO
    使用mini-textbox控件时 不能获取value值
    为表格动态添加一行,miniui组件无效
    miniui表格load数据成功后,回调函数,其中setData要用如下方法
    路径1
    路径
    dubbo spring bean id冲突
    @Transactional spring 配置事务 注意事项
    Spring事务管理只对出现运行期异常进行回滚
  • 原文地址:https://www.cnblogs.com/fightever/p/9605140.html
Copyright © 2011-2022 走看看