痛點分析:
在做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))