前面已經寫過利用BeautifulReport生成測試報告,那么接下來講講如何在測試報告里面保存截圖
首先需要在測試用例中定義一個截圖的方法:
# 截圖方法 """ os.path.abspath:返回當前目錄的絕對路徑 傳入一個img_name,並存儲到指定路徑下 """ def save_img(self, img_name): self.driver.get_screenshot_as_file('{}/{}.png'.format(os.path.abspath('F:\\before\\lds\\img'), img_name))
然后在測試用例中掛載一個裝飾器,在用例里面調用save_img方法
# -*- coding:utf-8 -*- from selenium import webdriver import unittest import os from pages.login_page import LoginPage from BeautifulReport import BeautifulReport url = '........' class LoginPageCase(unittest.TestCase): # 截圖方法 """ os.path.abspath:返回當前目錄的絕對路徑 傳入一個img_name,並存儲到指定路徑下 """ def save_img(self, img_name): self.driver.get_screenshot_as_file('{}/{}.png'.format(os.path.abspath('F:\\before\\lds\\img'), img_name)) @classmethod def setUpClass(cls): cls.driver = webdriver.Chrome() # 定義LoginPage的實例 cls.login_p = LoginPage(cls.driver) def setUp(self): self.driver.maximize_window() self.driver.get(url) # 退出登錄 清除cookie self.driver.delete_all_cookies() self.driver.refresh() # 截圖需用到的裝飾器,在用例里面調用前面定義的save_img方法 @BeautifulReport.add_test_img('測試報告') def test_01(self): """調用login_page里面定義的每個步驟的方法""" self.login_p.send_user("用戶名") self.login_p.send_pwd("12345678") self.login_p.click_btn() # 斷言 result = self.login_p.text_is_in() self.save_img('測試報告') self.assertTrue(result == '測試用例失敗截圖') def test_02(self): """調用login_page里面定義的每個步驟的方法""" self.login_p.send_user("") self.login_p.send_pwd("123456") self.login_p.click_btn() # 斷言 result = self.login_p.text_is_in() self.assertTrue(result == '用戶名或密碼錯誤,請檢查拼寫') @classmethod def tearDownClass(cls): cls.driver.quit() if __name__ == '__main__': unittest.main()
運行以上用例,用例失敗就會將截圖存放在測試報告中。
運行上面的測試用例,可以寫個測試套件將所有的用例文件一起執行,可結合這篇文章來看:https://www.cnblogs.com/wulixia/p/11420315.html