pytest框架優化——將異常截屏圖片加入到allure報告中


痛點分析:

在做allure定制化的時候,關於附件添加這一塊,我們在代碼里可以添加我們准備好的附件,這里用圖片,通過下面的方法就能實現

allure.attach(file, '圖片描述', allure.attachment_type.PNG)

那如果我們執行測試用例生成的allure測試報告中,能把失敗或者異常的測試用例的異常截圖也自動添加到allure報告中,豈不更完美?

問題思考:

1.用例執行完后,異常截圖圖片都在OutPus目錄下,怎么去跟用例關聯?

2.用什么方法去添加到allure報告中?

3.異常截圖那么多,我怎么把相關的異常截圖圖片添加到對應的用例下呢?

4.考慮到了代碼的執行順序了嗎?

5.截圖是從哪里生成的,是調用了什么方法才會生成異常截圖圖片?

......

帶着以上等等疑問,慢慢摸索,總結出三點:

  • 代碼的執行順序
  • 異常截圖是從driver.save_screenshot(file_name)方法中產生
  • 異常截圖的方法是封裝在basepage模塊下

解決方法:

因為測試用例執行過程中,測試步驟會調用PageObjects里面的方法,而PageObjects里面的方法又調用的是basepage里面的一系列action方法,而action方法封裝里面又調用了截屏捕獲的方法,所以我們只需要將allure.attach()方法添加到截屏捕獲的方法里面就可以了。

點開異常截圖,可以看到具體的圖片內容:

代碼如下:

def save_screenshot(self, img_doc):
    '''
    頁面截屏保存截圖
    :param img_doc: 截圖說明
    :return:
    '''
    file_name = OUTPUTS_DIR + "\\{}_{}.png".format(datetime.strftime(datetime.now(), "%Y%m%d%H%M%S"), img_doc)
    self.driver.save_screenshot(file_name)
    with open(file_name, mode='rb') as f:
        file = f.read()
    allure.attach(file, img_doc, allure.attachment_type.PNG)
    case_logger.info("頁面截圖文件保存在:{}".format(file_name))

 


免責聲明!

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



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