unittest---unittest錯誤截圖

  在作自動化的過程當中,大多數執行者都不在旁邊,那麼若是用例失敗了咱們一般看報告上的失敗信息,可是這樣有時候可能不夠清楚的判斷到底哪裏出了錯誤,咱們還能夠經過自動截圖的功能,判斷用例走到哪裏出了錯誤。html

截圖方法

在自動化中截圖方法有幾種,咱們一個個來看,那種最適合咱們。android

方法1:get_screensho t_as_file(self,filename)

經過屏幕進行截圖保存在對應路徑中web

def get_screenshot_as_file(self, filename):
        """
    將當前窗口的屏幕快照保存到PNG圖像文件中。返回
若是有IOError,則爲False,不然返回True。使用完整路徑
你的文件名。
        """
        if not filename.lower().endswith('.png'):
            warnings.warn("name used for saved screenshot does not match file "
                          "type. It should end with a `.png` extension", UserWarning)
        png = self.get_screenshot_as_png()
        try:
            with open(filename, 'wb') as f:
                f.write(png)
        except IOError:
            return False
        finally:
            del png
        return True

上面的源碼中提示了咱們如何進行使用,那麼咱們直接經過unittest進行開始操做吧app

異常截圖

# coding:utf-8
from appium import webdriver
import unittest
import time
class test(unittest.TestCase):
    def setUp(self):
        desired_caps = {
                         'platformName': 'Android',  # 測試版本
                         'deviceName': 'emulator-5554',   # 設備名
                         'platformVersion': '5.1.1', # 系統版本
                        "appPackage": "com.taobao.taobao",   # app包名
                        "appActivity": "com.taobao.tao.welcome.Welcome",   # 啓動launch Activity
                        "noReset": True,  # 不清空數據
                        "unicodeKeyboard": True,    # 使用Unicode編碼方式發送字符串
                        "resetKeyboard": True,      # 鍵盤隱藏起來
                                }
        self.driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)
    def test01(self):
        try:
    # 這裏寫錯了定位信息
            text = 'text("註冊/登陸1")'
            self.driver.find_element_by_android_uiautomator(text).click()
        except Exception as msg:
            print('報錯信息:%s'%msg)
            # 截圖
            self.driver.get_screenshot_as_file('123.png')
    def tearDown(self):
        time.sleep(3)
        self.driver.quit()
if __name__ == '__main__':
    unittest.main()

打開appium進行執行腳本,腳本執行後,查看咱們腳本的當前目錄,就會發現咱們的截圖已經成功的保存在當前目錄了測試

 

方法2:save_screenshot(‘filename')

經過源碼咱們能夠看到調用的仍是上門的方法,可是咱們同樣也可使用ui

 def save_screenshot(self, filename):
        """
       將當前窗口的屏幕快照保存到PNG圖像文件中。返回
若是有IOError,則爲False,不然返回True。使用完整路徑
你的文件名。
        """
        return self.get_screenshot_as_file(filename)

異常截圖

# coding:utf-8
from appium import webdriver
import unittest
import time
class test(unittest.TestCase):
    def setUp(self):
        desired_caps = {
                         'platformName': 'Android',  # 測試版本
                         'deviceName': 'emulator-5554',   # 設備名
                         'platformVersion': '5.1.1', # 系統版本
                        "appPackage": "com.taobao.taobao",   # app包名
                        "appActivity": "com.taobao.tao.welcome.Welcome",   # 啓動launch Activity
                        "noReset": True,  # 不清空數據
                        "unicodeKeyboard": True,    # 使用Unicode編碼方式發送字符串
                        "resetKeyboard": True,      # 鍵盤隱藏起來
                                }
        self.driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)
    def test01(self):
        try:
            text = 'text("註冊/登陸1")'
            self.driver.find_element_by_android_uiautomator(text).click()
        except Exception as msg:
            print('報錯信息:%s'%msg)
            # 方法2:
            self.driver.save_screenshot('222.png')

    def tearDown(self):
        time.sleep(3)
        self.driver.quit()
if __name__ == '__main__':
    unittest.main()

一樣的執行後,會在當前目錄中發現設備已經截圖了。編碼

 

其餘的截圖方法

# 保存的是base64的方法。通常用在html的時候。

def get_screenshot_as_base64(self):
        """
   以base64編碼的字符串獲取當前窗口的屏幕截圖
這是有用的嵌入式圖像在HTML。
        """
        return self.execute(Command.SCREENSHOT)['value']


# 截圖屏幕,以二進制的方法進行保存

def get_screenshot_as_png(self):
        """
以二進制數據的形式獲取當前窗口的屏幕截圖。
        """
        return base64.b64decode(self.get_screenshot_as_base64().encode('ascii'))

 

總結:unittest的截圖大體就是經過拋異常的方法捕捉錯誤,而後加上截圖功能。保存在指定目錄中。spa

 

若是感受安靜寫的對您有所幫助,能夠右下角點個關注,點關注,不迷路~~code

相關文章
相關標籤/搜索