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

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

  • 相关阅读:
    LINUX 环境变量总结
    make的自动变量和预定义变量
    函数调用约定和堆栈
    如何查看linux命令源代码
    shell脚本中特定符合变量的含义
    【转载】Redhat5和6 YUM源配置的区别
    用路径分析法来编写测试用例
    linux ip 设置
    Mysql 的存储引擎,myisam和innodb的区别。
    一些编译php时的configure 参数
  • 原文地址:https://www.cnblogs.com/qican/p/12120337.html
Copyright © 2011-2022 走看看