自動化測試平臺的探索

1、概述  

  距離上一篇帖子過去了將近一年的時間,主要緣由是由於這一年剛加入新公司,入職了一個新的行業,因此須要花時間學習新的業務知識,最近纔有時間去探索上一篇帖子說的自動化平臺的開發,此次只是先作了一下可行性研究,詳細以下html

2、前端設計

只作了基本的幾個控件, 在文本框內輸入要生成的文件數量,點擊生成後在相應的目錄下生成對應的文件前端

    

對應的代碼也很簡單,就一個from表單,以下:python

 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>

3、後臺邏輯

以前打算用Django實現,但目前項目組用的都是tornado,因此此次使用tornado來實現web

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

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

後臺源碼:tornado

邏輯很簡單,獲取前端txt文本框的值,若是值不爲空,則生成對應數量的測試文件oop

 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()

4、結果

  若是作過web開發的朋友應該知道,這樣生成的文件是存放在服務器端的,而我最初的設想是直接在客戶端生成的,這樣就與設計不符,方案缺乏可行性post

5、其餘

  一、跟同事一塊兒討論 建議先在服務器上生成,而後在下載到用戶的電腦,這樣技術上可行,但實現就複雜了,並且若是須要的文件數量多且文件較大,傳輸的時間會很長學習

  二、雖然次方案不能準備測試文件,但生成多個文件的分享地址仍是能實現的,平臺基本的結構就是這樣了,還在學習當中,歡迎高手指點!

相關文章
相關標籤/搜索