天天看點

怎麼基于Python自動化生成測試報告?

怎麼基于Python自動化生成測試報告?
怎麼基于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列資料重複,則:

由以上兩個問題進行舉一反三,實際上整篇文檔均是采取了預設資料、讀取資料、輸出資料這樣的流程進行生成的,其中預設資料指的是:

怎麼基于Python自動化生成測試報告?

而資料讀取環節,則是去周遊content_data.items()中的内容,由此找到報告文檔中每一小節中對應的預設内容,再去根據内容辨別進行區分使用對應的方法進行資料輸出:

怎麼基于Python自動化生成測試報告?

總結:

綜上,自動化測試報告生成腳本便完成了,在其後的版本疊代過程中隻需更改預設資料中的内容,不同樣式或内容的報告即可自動生成,希望本文能夠對大家有所幫助,歡迎各位同行發表你的看法。

怎麼基于Python自動化生成測試報告?

這些資料,對于【軟體測試】的朋友來說應該是最全面最完整的備戰倉庫,這個倉庫也陪伴我走過了最艱難的路程,希望也能幫助到你

關注我的微信公衆号【傷心的辣條】免費擷取~

送上一句話:

世界的模樣取決于你凝視它的目光,自己的價值取決于你的追求和心态,一切美好的願望,不在等待中擁有,而是在奮鬥中争取。

推薦好文:

Python簡單?先來40道基礎面試題測試下

App公共測試用例梳理

阿裡小黑歎息:越來越多的年輕人從職場撤退了?

原文不易呀,麻煩伸出發财小手點個贊,感謝您的支援,你的點贊是我持續更新的動力。