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

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

  • 相关阅读:
    Android四大组件
    git命令记录
    .net core试水
    记一次NPOI的使用
    上位机开发经验教训总结
    Python爬虫,爬取腾讯漫画实战
    记一次微信小程序的开发
    sql使用cte表达式进行递归查询
    使用百度的webuploader进行附件上传
    Winform文件上传
  • 原文地址:https://www.cnblogs.com/qican/p/12120337.html
Copyright © 2020-2023  润新知