unittest---unittest错误截图

Posted qican

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了unittest---unittest错误截图相关的知识,希望对你有一定的参考价值。

  在做自动化的过程中,大多数执行者都不在旁边,那么如果用例失败了我们通常看报告上的失败信息,但是这样有时候可能不够清楚的判断到底哪里出了错误,我们还可以通过自动截图的功能,判断用例走到哪里出了错误。

截图方法

在自动化中截图方法有几种,我们一个个来看,那种最适合我们。

方法1:get_screensho t_as_file(self,filename)

通过屏幕进行截图保存在对应路径中

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进行开始操作吧

异常截图

# 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‘)

通过源码我们可以看到调用的还是上门的方法,但是我们一样也可以使用

 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的截图大致就是通过抛异常的方法捕捉错误,然后加上截图功能。保存在指定目录中。

 

如果感觉安静写的对您有所帮助,可以右下角点个关注,点关注,不迷路~~

以上是关于unittest---unittest错误截图的主要内容,如果未能解决你的问题,请参考以下文章

unittest---unittest跳过用例

unittest---unittest简单介绍

unittest---unittest生成测试报告

unittest---unittest多种加载用例方法

Python必会的单元测试框架 —— unittest

Python单元测试:unittest使用简介