Airtest報告「全攻略」,看完直接用腳本生成、導出報告,真香!


👆對私有云感興趣能夠進入公衆號回覆「私有云」哦。







前言


最近依然收到來自答疑羣小夥伴對生成報告這方面的疑問,包含生成報告和導出報告的區別、能不能不用IDE來生成報告、如何在用腳本生成/導出報告等等,今天的推文將跟你們一一詳解這些問題:
  • 在IDE中一鍵生成、導出報告
  • 用命令行生成、導出報告
  • 在腳本中生成、導出報告







在IDE中一鍵生成、導出報告


1

生成報告css


若是同窗們使用咱們專用的編輯器AirtestIDE來編寫和運行腳本,那麼同窗們就能夠很是便捷地在IDE中使用快捷鍵生成和導出報告。
運行完腳本以後,點擊頂部菜單欄的  查看報告  按鈕(快捷鍵Ctrl+L),便可快速生成並在瀏覽器中打開html格式的報告:
若想查看生成報告的本地文件,能夠  右鍵  點擊腳本名稱,選擇  打開報告文件目錄  :
細心的同窗還會發現,在咱們點擊  查看報告  按鈕的同時,log查看窗會出現1條生成報告的命令(這條命令很是重要,下文咱們也會講到):
其實在這條命令中,經過  --outfile  參數,咱們也能夠知道報告所在的本地文件路徑。
但這裏有一個新手同窗很容易犯的錯誤值得咱們注意下,不少同窗找到了報告所在的本地文件夾以後,就直接把這個文件夾打包發給同事/領導查看,結果發現,同事/領導根本不能正常查看這個報告:
出現這個問題的緣由實際上是,這樣生成的html報告,裏面的一些圖片路徑和靜態資源路徑是  絕對路徑  。當報告被髮到別的電腦上時,html再想經過絕對路徑找到這些圖片資源和靜態資源,就不可能了,因此才形成  其餘人看到的報告徹底沒有圖片和相應樣式  的狀況。
2

導出報告html


那麼,爲了讓別人也能夠看到同窗們本地生成的報告,咱們在IDE中提供了導出報告的功能,右鍵點擊腳本名稱,選擇  導出報告  ,以後再選擇導出報告的存放路徑便可:
導出報告以後,圖片資源和靜態資源的路徑都被改爲了 相對路徑 ,而且文件夾中還 打包了對應的靜態資源文件 。這樣咱們再把導出好的報告發到別的電腦查看時,就不會出現上述問題了。
3

生成報告失敗python


另外,在IDE中生成/導出報告的時候,咱們還有可能會遇到報告生成失敗的問題:
這時候能夠複製log查看窗裏面那條生成報告的命令,到本地命令行中運行,查看具體的報錯緣由(不會分析報錯緣由也能夠發送到  官方答疑Q羣1017250147  ,獲取官方解答)。
目前遇到最多見的緣由就是,同窗們在IDE中設置了本地python環境,而且本地python環境中同時安裝了  poco  和  pocoui  (卸載 poco ,僅保留 pocoui ),這兩個庫衝突致使生成報告失敗。







用命令行生成、導出報告


也有不少同窗並不知足於在IDE中運行腳本,因此他們就會使用命令行來運行腳本、生成報告等等。須要注意的是,在命令行中運行Airtest腳本,使用的python環境就是  本地python環境  了,不是IDE集成好的帶有  airtest  和  pocoui  庫的精簡python環境(注意是  pocoui  ,不是  poco  ,若已經安裝了  poco  ,則須要卸載,不然會跟  pocoui  有衝突)。
因此咱們在命令行運行腳本、生成報告以前,要先確保咱們本地的python環境已經已經裝好了  airtest  和  pocoui  ,使用  pip list  指令便可查看。
安裝命令以下:
  
  
   
   
            
   
   
pip install airtest
pip install pocoui
1

運行腳本:airtest run ...web


在生成報告以前,咱們須要先運行1次airtest腳本,運行腳本的命令是  airtest run + 腳本文件路徑 ,另外該命令還能夠傳入如下幾個參數:
  • --device ,用來指定鏈接的被測設備
  • --log ,用來指定log內容和截圖存放的目錄
  • --recording ,運行腳本時進行錄屏操做
示例以下:
  
  
   
   
            
   
   
airtest run D:/test/report_test.air --device Android:/// --log C:/Users/xiaoming/log --recording
若是同窗們對在命令行運行腳本還不是那麼熟悉,能夠先在IDE中運行腳本,觀察log查看窗裏面那條運行腳本的命令是如何寫的,甚至咱們能夠 直接複製該命令到命令行中執行

2

生成報告:airtest report ...瀏覽器


運行完腳本以後,咱們就能夠在命令行中用  airtest report + 腳本文件路徑  指令來生成一份HTML格式的報告。
該命令也有很是多的可傳參數,例如:
  • --log_root ,指定log內容和截圖文件所在的目錄
  • --outfile ,指定生成報告的目錄
  • --lang ,指定報告語言,能夠是中文/英文
  • --export ,導出一個包含全部資源的報告文件
  • --static_root ,指定靜態資源文件的路徑
示例以下:
  
  
   
   
            
   
   
airtest report D:/test/report_test.air --log_root C:/Users/xiaoming/log --outfile E:/log_test/log.html --lang zh
另外,在上文咱們有提到,點擊IDE中  查看報告  按鈕的時候,log查看窗會相應地出現1條生成報告的命令,咱們也能夠複製該命令到命令行中運行,也可以幫助咱們生成報告。
3

導出報告:--export ...服務器


未使用導出參數  --export  生成的報告,與IDE點擊查看報告按鈕生成的報告是同樣的,只能在本地查看,不能發到別的電腦上查看。
若須要導出報告,咱們須要在生成報告指令時,添加上這個  --export  參數:
  
  
   
   
            
   
   
# 使用了export參數,outfile參數會失效,因此使用了export參數就能夠不使用outfile
airtest report D:/test/report_test.air --log_root C:/Users/xiaoming/log --lang zh --export E:/log_test/
這樣生成的報告,圖片和資源路徑纔會是相對路徑,而且包含了靜態資源文件,能發到別的電腦上查看。
4

靜態資源:--static_root ...微信


但一些常常導出報告的同窗會發現,每次導出1份報告,就會帶有1份相同的靜態資源文件  static ,它包含了報告中的css和js等文件,這樣的重複拷貝佔用了不少的磁盤空間。而且咱們知道,除非報告的樣式作了某些更新,不然這些靜態資源文件都是固定不變的。
因此咱們可不能夠把這個靜態資源文件統一放到1個地方,每一份HTML報告都去這個地方訪問這些靜態資源呢?這樣即便靜態文件有所改變,咱們也只須要替換掉這個地方的靜態資源文件便可。
答案固然是能夠的,使用  --static_root  參數便可實現!咱們能夠將這些資源文件部署到靜態資源文件服務器上,用例如  https://host:port/static/css/  的路徑來訪問它。而後在生成報告時,將這個部署出來的服務器地址做爲  --static_root  的參數傳過去:
  
  
   
   
            
   
   
airtest report D:/test/report_test.air --log_root C:/Users/xiaoming/log --lang zh --static_root https://host:port --export E:/log_test/
這樣導出的HTML報告,裏面的靜態資源路徑,都是部署好的服務器地址。另外須要注意的是,傳入  --static_root  的參數須要以  http  開頭才能被識別:
關於在命令行生成、導出報告的內容,咱們在以前的推文  導出報告老是出錯怎麼辦  有更加詳細的介紹和示例,對在命令行運行腳本、生成報告感興趣的同窗能夠前往查看下。







在腳本中生成、導出報告


若是不借助IDE和命令行,咱們能不能直接在腳本中調用一些接口,讓腳本執行完畢時,自動生成或者導出1份報告給咱們呢?
咱們能夠藉助  simple_report()  接口或者  LogToHtml()  類來實現。
1

simple_report :生成報告app


先來說講這個  simple_report  接口,它實際上是1個簡化版的生成報告的接口,能夠減小同窗們的理解成本和使用成本:
若是同窗們不指定任何參數,該接口會使用默認的參數生成1份HTML格式的報告, output='log.html'  表示在當前腳本路徑下生成名爲  log.html  的airtest報告:
  
  
   
   
            
   
   
from airtest.report.report import simple_report
simple_report(__file__)
若是指定了  output  參數,則會按指定路徑生成報告:
  
  
   
   
            
   
   
from airtest.report.report import simple_report
simple_report(__file__,logpath=True,output=r"D:\test\report02\log.html")
2

LogToHtml:導出報告less


若是同窗們不須要經過腳本的形式導出報告,僅須要生成報告在本地查看的話,只要使用  simple_report  接口便可。
但若是須要經過腳本的形式來導出1份報告,則須要用到  LogToHtml  類:
這個類的參數相對於  simple_report()  就複雜的多了,包含:
  • script_root ,腳本路徑
  • log_root ,log文件的路徑
  • static_root ,部署靜態資源的服務器路徑
  • export_dir ,導出報告的存放路徑
  • script_name ,腳本名稱
  • logfile ,log文件log.txt的路徑
  • lang ,報告的語言(中文:zh;英文:en)
  • plugins ,插件,使用了poco或者airtest-selenium會用到
示例以下,咱們在指定路徑  D:\test\report02  中導出了  D:\test\report01.air  腳本的運行報告,報告語言爲英文:
  
  
   
   
            
   
   
from airtest.report.report import LogToHtml

h1 = LogToHtml(script_root=r'D:\test\report01.air', log_root=r"D:\test\report01.air\log", export_dir=r"D:\test\report02" ,logfile=r'D:\test\report01.air\log\log.txt', lang='en', plugins=None)
h1.report()
3

try-finally:保證最後都能生成報告編輯器


通常狀況下,生成報告的語句應該是放在全部用例腳本的後面,保證用例執行完畢以後,才執行生成腳本的語句。
但這裏容易出現一種狀況,一旦前面有用例腳本執行失敗,終止了整個腳本的運行,即尚未執行到生成報告的語句時,腳本運行就已經中止了,這樣也不可以正常生成報告。
因此咱們能夠用  try-finally  語句,不論腳本是否運行失敗,最終都會生成1份運行報告:
  
  
   
   
            
   
   
try:
poco("com.netease.newsreader.activity:id/bjd").wait_for_appearance()
poco("com.netease.newsreader.activity:id/awo").click()
...
finally:
simple_report(__file__,logpath=True,output="../netease_music/登陸.html")
print("-----執行完畢-----")

(嘿同窗,若是推文對你有幫助的話,幫忙點個贊或者在看唄~)
導出報告老是出錯怎麼辦
用Airtest和poco輕鬆作爬蟲~
教你實現連續滑動、雙指捏合、多指滑動

本文分享自微信公衆號 - AirtestProject(AirtestProject)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。

相關文章
相關標籤/搜索