一,介紹
QQ交流群:585499566
本文的目的是怎么使用Pyh+Bootstrap快速生成簡約,大方,清新的Html頁面,涉及到的技能:Python小白技能,Pyh會閱讀中文文檔,Html基礎,Bootstrap能閱讀懂中文文檔
Python:當然是Python3了...
Pyh:是這位大神 https://code.google.com/p/pyh/wiki/UserManual 制作,需要連接代理才能查看哈,好在有人做了翻譯:https://www.jianshu.com/p/dc2ddd8e80cc
在翻譯連接里,有具體的使用描述,這里不做介紹了哈
功能介紹:
- 自動格式化HTML標簽
- 高度可定制
- 完全識別CSS和Javascript
- 自動閉合標簽
- 面向對象的HTML編寫方式
Html:能夠找到這篇文章,肯定是懂得使用HTML代碼的,為了防止“小白”看到這篇文章不知所措,就貼上公認的HTML參考網站w3school:http://www.w3school.com.cn/tags/tag_html.asp
Bootstrap:是css,js框架,可以美化的頁面,將“丑八怪”變成“美少女”,哈哈... 這是中文使用地址,建議用3:https://v3.bootcss.com/
這里讓你們看下“丑八怪”與“美少女”的對比:
是不是變的美了很多啊,啊,你說還不太美,想變成“西施”,那就需要你再幫幫它化下妝了......這好像證明了:天下了沒有丑女人,只有懶女人
二、實操
說的再多,卻不貼代碼,就是耍流氓,耽誤閱讀者的時間,浪費別人的青春
1 #!/usr/bin/env python 2 # -*- coding:utf-8 -*- 3 4 from pyh import * 5 6 page = PyH('接口測試報告') #第一步:需要先生成含標題的HTML模板 7 page.addCSS('https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.min.css') #第二步:需要加載我們要使用的Bootstrap模板css文件,需要的話還可以加載js 8 Container = page << body(id='Body', cl='bg-warning') << div(id="container",cl="container") #第三步:通過移位符“<<”,來生成所屬標簽;“<<”左側最終必須是page 9 10 # 報告標題 start 11 Headrow = Container << div(id="Headrow", cl="row") 12 Headrow << h1(id="HeadH1",align="center") << strong("API_AutoTest_Report ",id="HeadTxt") + small("Sonny.zhang", id="author") 13 Headrow << br() 14 # 報告標題 end 15 16 # 數據統計 start 17 Totalrow = Container << div(id="Totalrow", cl="Totalrow") << div(cl="jumbotron") 18 # --測試使用時間,測試用例總數-- 19 test_time_txt = ["測試總耗時:", "0:00:04.307585"] 20 case_num = ["用例總數:", "7"] 21 UTimerow = Totalrow << div(id="UTimerow", cl="row") 22 UTimerow << div(cl="col-xs-12 col-md-6") << p(role="presentation") << span(test_time_txt[0]) << span(test_time_txt[1], cl="label label-default") 23 UTimerow << div(cl="col-xs-12 col-md-6") << p(role="presentation") << span(case_num[0]) << span(case_num[1],cl="label label-primary") 24 # --用例失敗成功統計-- 25 Num1_txt = ["成功用例數(Pass):", "3"] 26 Num2_txt = ["失敗用例數(Fail):", "2"] 27 Num3_txt = ["出錯用例數(Error):", "2"] 28 Num4_txt = ["未執行用例數(Block):", "1"] 29 Amountrow = Totalrow << div(id="Amountrow", cl="row") 30 Num1 = Amountrow << div(id="Num1", cl="col-xs-12 col-md-3") << p(role="presentation") << span() << small(Num1_txt[0]) << span(Num1_txt[1], cl="label label-success") 31 Num2 = Amountrow << div(id="Num2", cl="col-xs-12 col-md-3") << p(role="presentation") << span() << small(Num2_txt[0]) << span(Num2_txt[1], cl="label label-danger") 32 Num3 = Amountrow << div(id="Num3", cl="col-xs-12 col-md-3") << p(role="presentation") << span() << small(Num3_txt[0]) << span(Num3_txt[1], cl="label label-warning") 33 Num4 = Amountrow << div(id="Num4", cl="col-xs-12 col-md-3") << p(role="presentation") << span() << small(Num4_txt[0]) << span(Num4_txt[1], cl="label label-default") 34 # 數據統計 end 35 36 # 測試計划 start 37 Plans = Container << div(id="plans", cl="row") 38 # --欄目標題-- 39 plans_title = "測試用例摘要" 40 PlansTitle = Plans << div(id="plans-title", cl="panel panel-primary") << div(cl="panel-heading") << strong() << center(plans_title, cl="text-uppercase") 41 42 # --一個測試計划-- start 43 Plan1 = Plans << div(id="plan1", cl="col-xs-12 col-md-12") << table(cl="table table-striped") 44 # ---一個標題-- 45 plan1_title = "測試計划【項目名稱:APItest, 計划名稱:user_operation】" 46 Plan1 << center() << caption(plan1_title) 47 # --一個列表-- 48 # 表頭 49 thead1 = ["ID", "執行編號", "用例ID", "用例外部ID", "用例名稱", "用例套件", "執行結果", "運行時間"] 50 Thead1 = Plan1 << thead() 51 Thead1 << tr() << th(thead1[0]) + th(thead1[1]) + th(thead1[2]) + th(thead1[3]) + th(thead1[4]) + th(thead1[5]) + th(thead1[6]) + th(thead1[7]) 52 # 表體 53 tbody1 = ["151", "20180804110924", "1079", "APItest-1", "獲取token", "獲取token", "Pass", "2018-08-04 11:09:24"] 54 Error = "Error" 55 Tbody1 = Plan1 << tbody() 56 Tbody1 << tr() << th(tbody1[0], scope="row") + td(tbody1[1]) + td(tbody1[2]) + td(tbody1[3]) + td(tbody1[4]) + td(tbody1[5]) + td(tbody1[6]) + td(tbody1[7]) 57 Tbody1 << tr() << th(tbody1[0], scope="row") + td(tbody1[1]) + td(tbody1[2]) + td(tbody1[3]) + td(tbody1[4]) + td(tbody1[5]) + td(p(Error, cl="label label-danger")) + td(tbody1[7]) 58 # --一個測試計划-- end 59 # 測試計划 end 60 61 # 測試用例 start 62 Cases = Container << div(cl="row") 63 # --欄目標題-- 64 cases_title = "用例執行明細" 65 CasesTitle = Cases << div(cl="panel panel-primary") << div(cl="panel-heading") << strong(center(cases_title, cl="text-uppercase")) 66 # --一個測試用例-- start 67 Case1 = Cases << div(cl="col-xs-12 col-md-12") << table(cl="table table-striped") 68 # ---一個標題-- 69 Case1_title = "測試計划【項目名稱:APItest, 計划名稱:user_operation】" 70 Case1 << center() << caption(plan1_title) 71 # --一個列表-- 72 # 表頭 73 thead1 = ["ID", "執行編號", "用例ID", "用例外部ID", "用例名稱", "用例套件", "執行結果", "運行時間"] 74 Case1Thead1 = Case1 << thead() 75 Case1Thead1 << tr() << th(thead1[0]) + th(thead1[1]) + th(thead1[2]) + th(thead1[3]) + th(thead1[4]) + th(thead1[5]) + th(thead1[6]) + th(thead1[7]) 76 # 表體 77 tbody1 = ["151", "20180804110924", "1079", "APItest-1", "獲取token", "獲取token", "Pass", "2018-08-04 11:09:24"] 78 Error = "Error" 79 Case1Tbody1 = Case1 << tbody() 80 Case1Tbody1 << tr() << th(tbody1[0], scope="row") + td(tbody1[1]) + td(tbody1[2]) + td(tbody1[3]) + td(tbody1[4]) + td(tbody1[5]) + td(tbody1[6]) + td(tbody1[7]) 81 Case1Tbody1 << tr() << th(tbody1[0], scope="row") + td(tbody1[1]) + td(tbody1[2]) + td(tbody1[3]) + td(tbody1[4]) + td(tbody1[5]) + td(p(Error, cl="label label-danger")) + td(tbody1[7]) 82 # --一個測試計划-- end 83 # 測試計划 end 84 85 page.printOut('Pyh_Template.html')
在代碼中我已經注釋了Pyh的使用要點:“<<”,還有任何問題,可以加群進行解答,交流