zoukankan      html  css  js  c++  java
  • <unittest学习10>unittest错误截图

    截图方法

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

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

    声明 欢迎转载,但请保留文章原始出处:) 博客园:https://www.cnblogs.com/chenxiaomeng/ 如出现转载未声明 将追究法律责任~谢谢合作
  • 相关阅读:
    【文字检测算法整理】
    【LDA】周志华
    【PCA】周志华
    【SVM】周志华
    4.1、顺序栈的实现(java实现)
    3.1、双向循环链表(java实现)
    5、链表队列(java实现)
    4、链栈的实现(java代码)
    3、循环链表(java实现)
    CommonsMultipartFile 转为 File 类型
  • 原文地址:https://www.cnblogs.com/chenxiaomeng/p/14837384.html
Copyright © 2011-2022 走看看