從0到1完成appium+pytest+allure框架-在測試報告中加入截圖


最近今天忙着優化框架,所以更新遲了些,先來看看在測試報告中加入截圖怎么做吧,稍后分享一下我最近優化的成果。

查了很多資料,看到最多的是通過hook函數去獲取用例執行狀態然后進行截圖,那個應該是最方便的,但是呢,我比較笨看不太懂,所以就用了從別人那里學來的另一個方法。

封裝一個斷言失敗添加截圖的方法。

代碼示例:

def get_screenshot(self, doc):
global logger
logger = DemoLog().get_log()
logger.info('開始截圖')
now = datetime.datetime.now().strftime('%Y%m%d%H%M%S')
pic_name = now + '.png'
self.driver.get_screenshot_as_file(pic_name)
with open(pic_name, mode='rb') as f:
file = f.read()
allure.attach(file, doc, allure.attachment_type.PNG)
return pic_name

# 通過斷言進行截圖
def result_assert(self, res, expected, doc=''):
try:
assert res in expected
except AssertionError:
screen_name = self.get_screenshot(doc)
logger.info(f'截圖成功,圖片為{screen_name}')
raise

解讀一下上面的兩個方法
日志的之前講過,我就直接略過了
設置一個當前時間作為變量,然后用這個時間加入到圖片名字里,這樣可以避免圖片名字的重復
driver.get_screenshot_as_file()這個方法是截圖用的,使用驅動器進行截圖,並命名為pic_name
然后讀取截圖的圖片文件,allure.attach是將該截圖文件添加進測試報告,doc參數在下面斷言的方法中傳入

嘗試進行斷言,如果res在excepted中則通過,否則拋出斷言錯誤,並且調用截圖方法並加入測試報告
上面的res是你想斷言的結果,excepted是元素的屬性,doc是斷言后的提示語。

在寫斷言的時候就可以直接調用,這樣一旦斷言失敗就可以自動截圖並添加到報告中了

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM