大廠測試總監簡單教你用python自動化生成測試報告
前言
日常測試當中常常要將測試結果輸出為報告文件公之於眾,如果能將報告文件生成的過程自動化實現,效率的提升無疑是可觀的。
針對這一項,我們瞭解並嘗試通過python中的docx模組進行word文件自動化生成,在這裡將基本方法與實現過程分享一下。
安裝
由於使用的是python3,實踐過程中發現,如果直接使用pip命令安裝模組:
pip install docx
import模組會因版本問題報錯,應前往:https://www.lfd.uci.edu/~gohlke/pythonlibs/下載最新的python_docx-0.8.10-py2.py3-none-any.whl再解除安裝原版本並重新安裝此whl檔案:
pip uninstall docx
此時再次嘗試import docx則不再有報錯提示,即安裝成功。
基本方法
安裝成功後,則可以開始著手根據格式、內容需求來生成文件,下面根據文件生成過程中的一些要素來介紹一些docx模組的基本方法。
首先是建立空白文件,其後的所有操作都需要基於文件物件document來進行操作:
from docx import Document
其次則是為文件新增標題、段落這樣的基本元素:
document.add_heading('This is my title', 1) #新增1級標題
但以此方式新增的標題、段落,其格式只能為docx模組預設格式且內容不易修改,實踐中採取了一種更為靈活的方式:
head = document.add_heading(level=1) #新增標題
由此,使用run物件進行內容追加,即可於後續直接對其字型等文字屬性進行修改,例如:
run.font.name = fontName #設定英文字型
而關於字號、加粗、顏色等其他屬性的設定方式和字型設定類似,此處以一個整合函式為例:
from docx.shared import Inches, Pt, RGBColor, Cm
同樣的,也可以修改段落相關屬性以契合預期表現效果:
from docx.enum.text import WD_ALIGN_PARAGRAPH
在完善了文件中文字、段落的格式之後,還需要針對測試報告中不可或缺的圖片與表格進行新增與設定:
# 新增圖片並居中,'pic.png'為相對路徑,width為圖片相對大小
# 新增表格,rows和cols為行列數、Table Grid為實體邊框樣式
最後,考慮到文件的整體樣式,可以對其頁面進行設定:
#頁面設定,A4,窄邊距
實現過程
先來列舉兩個實現過程中的問題以作示例,繼而對文件自動化生成的整體思路進行引申。
其一,報告內容中存在著多處需要加粗或改變字型的文字,那麼如何便捷地適配每處文字的具體表現呢?此處的方案是先預設一些‘關鍵詞’如:'V5.1'、'高階機'等,再組成適配re.split()的正則表示式去對報告內容進行分割與設定:
# 根據預設關鍵詞拼接正則表示式
其二,考慮到表格著存在不同形式的合併需求,那麼如何使其合併方式自動化地適配資料呢?此處的方案為在預設表格資料時,將合併的表格內資料重複寫一次,即:
#表格資料——“評測專案”首行1-2列合併則寫了2次、”對比產品“首列5-8行合併寫了4次
其後於指令碼的表格輸出方法中,直接根據所讀取到的重複資料項分佈方式來決定表格的合併形式,如首行1-2列資料重複,則:
table.cell(0, 0).merge(table.cell(0, 1))
由以上兩個問題進行舉一反三,實際上整篇文件均是採取了預設資料、讀取資料、輸出資料這樣的流程進行生成的,其中預設資料指的是:
而資料讀取環節,則是去遍歷content_data.items()中的內容,由此找到報告文件中每一小節中對應的預設內容,再去根據內容標識進行區分使用對應的方法進行資料輸出:
總結
對面試經驗、軟體、介面、自動化測試感興趣可以175317069,群內會有不定期的免費資料連結發放。如果你有好的學習資料可以私聊發我,我會註明出處之後分享給大家。
綜上,自動化測試報告生成指令碼便完成了,在其後的版本迭代過程中只需更改預設資料中的內容,不同樣式或內容的報告即可自動生成,希望本文對大家有所幫助。