自动化测试平台的探索

一、概述  

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

二、前端设计

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

    

对应的代码也很简单,就一个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="width:80px">
10     <br>
11     JPG: <input type="text" name="jpg" style="width:80px">
12     <br>
13     PDF: <input type="text" name="pdf" style="width:80px">
14     <br>
15     EXEC: <input type="text" name="exec" style="width:80px">
16     <br><br>
17     <input type="submit" value="生成" style="width: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、虽然次方案不能准备测试文件,但生成多个文件的分享地址还是能实现的,平台基本的结构就是这样了,还在学习当中,欢迎高手指点!

posted @ 2018-09-10 11:16  hello-real  阅读(279)  评论(0编辑  收藏  举报